2014-10-28 130 views
1

我有以下方法:LINQ到SQL多表查詢

public List<object> GetLoginValues(String user, String pass) 
{ 
    using (db = new DCDataContext()) 
    { 
     List<object> x = (from u in db.users 
         join t in db.userTypes on u.type equals t.typeID 
         where u.loginName == user && 
         u.password == pass && 
         u.isActive == true 
         select new 
         { 
          u.userID, 
          u.loginName, 
          u.userCode, 
          u.type, 
          u.team, 
          t.typeName 
         }).ToList(); 
     return x; 
    } 
} 

這顯然是行不通的。我需要這個方法來返回這個連接的結果。優選爲List。我想知道是否可以在不需要爲包含兩個表的屬性的類創建一個類,因爲我使用的是linq-to-sql,並且每個表都已經有類。

爲了使這個查詢/方法正常工作,我應該返回什麼類型?

+0

我剛剛更新了我的回答做這項工作? – RajeshKdev 2014-10-28 10:35:48

回答

0

以下方法會將連接的結果返回到列表中。

您需要通過加入來指定要在兩個表中使用的列。您必須指定列(屬性),因爲連接不知道需要選擇哪個列。而且它的良好做法。選擇所需的列而不是選擇所有列屬性。

public dynamic GetLoginValues(String user, String pass) 
{ 
    using (db = new DCDataContext()) 
    { 
     var x = (from u in db.users 
       join t in db.userTypes on u.type equals t.typeID 
       where u.loginName == user && 
       u.password == pass && 
       u.isActive == true 
       select new 
        { 
         u.userID, 
         u.loginName, 
         u.userCode, 
         u.type, 
         u.team, 
         t.typeName 
        }).ToList(); 
     return x; //returns the list of values 
    } 
} 

是的,如果你不想使用自定義類,那麼上述代碼將不需要創建額外的自定義類。

調用方法象下面這樣:

YourClassName dbObj = new YourClassName(); 
var loginDetailsList = dbObj.GetLoginValues("RJK", "123456");