2016-03-15 69 views
0

我的数据库中有一个用户表。将查询结果从请求转换为Linq对象

tabUser的结构:INTID,strUserName中,strPassword

在我的User类我想列出所有我的数据库中包含的用户。

我试了一下:

public List<User> GetAllUsers() 
    using (var db = new AdventureWorksEntities()) 
      { 
       return (from u in db.tabUser 
         select new User{ 
          u.strUsername 
         }).ToList(); 
      } 

用户构造:

public class User { 

     private strUsername; 

     public User() {} 

     public User(string username){ 
      this.strUsername = username; 
     } 

     public void setUsername(string username){ 
      this.strUsername = username; 
     } 

     public string getUsername(){ 

      return strUsername; 
     } 

我想,该方法返回我的所有用户的列表。 但这不起作用。请帮忙吗?

+0

你为什么不使用属性,你只熟悉Java?除此之外,你的代码有什么问题?你为什么不使用带''username'的构造函数? –

+0

db.tabUser.Select(x => new User(x.strUsername))。ToList(); – Backtrack

回答

1

为什么不使用带有username的构造函数?

return db.tabUser.Select(u => new User(u.strUsername)).ToList(); 

更新:根据意见,似乎是一个必须具备有一个参数的构造函数,并使用使用LINQ到实体属性初始化。其余仍适用:

为什么不使用properties?然后你可以使用你的代码。目前它不起作用,因为您是试图访问私人字段strUsername

public class User 
{ 
    public User() {} 
    public User(string username) 
    { 
     this.UserName = username; 
    } 
    public string UserName { get; set; }  
} 

现在您的代码工作(固定naming/capitalization convention问题):

return (from u in db.tabUser 
     select new User{ u.Username = u.strUsername }) 
     .ToList(); 
+0

我不确定Linq-to-Entities支持使用非参数构造函数的投影 – haim770

+1

OP似乎在使用EF。如果是这样,在必须使用无参数构造函数和属性初始值设定项。 –

+0

是的,我尝试了解决方案时遇到错误。 Linq不支持 – joohn