C#如何做左的联接在 LINQ 中单个联接中的多个字段

标签: Linq C#
发布时间: 2017/2/27 3:46:05
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图对 LINQ 做这个简单的 sql 查询。但它给我的错误。

这里是需要转换为 LINQ 的 SQL 查询

 DECLARE @groupID int
 SET @groupID = 2
 SELECT * 
    FROM dbo.Person p
    LEFT JOIN dbo.PersonGroup pg ON ( p.PersonID = pg.PersonID AND pg.GroupID = @groupID)

忽略 @groupID。LINQ 查询,将作为函数参数提供的。

我一直在这儿 LINQ 查询。

from p in Person
 join pg in PersonGroup on new { p.PersonID, groupID } equals new { pg.PersonID, pg.GroupID } into t
 from rt in t.DefaultIfEmpty()

在那里的 groupID 被提供作为函数参数。GroupID 和 PersonID 是 int。但是它给了我以下错误,

Error   2   The type of one of the expressions in the join clause is incorrect.  Type inference failed in the call to 'GroupJoin'.

小小的帮助将不胜感激。

解决方法 1:

您的代码

from p in Person
 join pg in PersonGroup on new { p.PersonID, groupID } equals new { pg.PersonID, pg.GroupID } into t
 from rt in t.DefaultIfEmpty()

将其更改为

from p in Person
 join pg in PersonGroup on new { Person = p.PersonID, Group = groupID } equals new { Person = pg.PersonID, Group = pg.GroupID } into t
 from rt in t.DefaultIfEmpty()

这种方式,它将加入使用匿名类型

赞助商