Linq-to -sql多表查询

时间:2014-10-28 09:34:57

标签: c# linq linq-to-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并且已经为每个表都有类。

为了使这个查询/方法正常工作,我应该返回什么类型?

1 个答案:

答案 0 :(得分:0)

以下方法会将join的结果返回给List。

您需要通过加入来指定要从两个表中使用的列。您必须指定列(属性),因为join不知道需要选择哪个。还有它的良好做法。选择所需的列而不是选择所有列属性。

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");