LINQ to SQL .Join语法

时间:2015-03-24 11:12:55

标签: c# linq

我正在努力使用.Join方法链接LINQ的语法。
我需要使用此语法,以便我的查询返回IQuerable结果,而不是IEnumerable

我想加入UserGroups的用户,并返回一个包含两个表中字段的新对象。 这里JOIN操作的正确语法是什么?

var q = dc.Users
    .Join(dc.UserGroups, 
          p => p.UserGroupID, 
          s => s.UserGroupID, 
          x => x.UserGroup) //what is the right syntax?
    .Where(p => p.User.DepartmentID == '123')
    .OrderBy(p => p.User.UserName)
    .Select(p => new UserStruct 
        { 
            UserID = p.UserID,  
            UserName = p.User.UserName,  
            FullName = p.User.FullName,  
            UserGroup = p.UserGroup  
        });

这里的错误是:

  

无法从用法中推断出方法....的类型参数。

1 个答案:

答案 0 :(得分:2)

这样的事情:

var q = dc.Users
    .Join(dc.UserGroups, 
          p => p.UserGroupID, 
          s => s.UserGroupID, 
          (u, g) => new { User = u, UserGroup = g}) 
    .Where(p => p.User.DepartmentID == '123')
    .OrderBy(p => p.User.UserName)
    .Select(p => new UserStruct 
        { 
            UserID = p.User.UserID,  
            UserName = p.User.UserName,  
            FullName = p.User.FullName,  
            UserGroup = p.UserGroup  
        });