2016-03-15 68 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