使用Linq将查询结果从请求转换为对象

时间:2016-03-15 09:00:21

标签: c# linq

我的数据库中有一个User表。

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;
        }

我希望该方法返回所有用户的列表。 但这不起作用。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

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

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

更新:根据评论,似乎是必须拥有以拥有无参数构造函数并使用属性初始值设定项与Linq-To-Entities。其余的仍然适用:

为什么不使用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();