当类型相同时,join子句中的一个表达式的类型不正确

时间:2010-09-22 12:18:42

标签: c# linq

这让我很困惑,我在以下LINQ中的连接上有标题错误:

var r = (from k in location.tblKeyAccountInfoes
                     join l in location.tblLocations
                     on new { k.MemberID, k.LocationID } equals
                     new {l.MemberId, l.LocationId }
                     where k.MemberID == memberid && k.UserName == username
                     select l.LocationName);

            return r.ToString();

但是,MemberId和LocationId的类型是一样的,所以我不确定我做错了什么。

感激地收到任何指示。

1 个答案:

答案 0 :(得分:18)

MemberID和LocationID的类型可能相同,但它们也必须具有相同的名称

在您的示例中,其中一个 ID (大写D),另一个 ID (小写d)。这足以使匿名类型成为单独的类型。

您可以通过明确指定名称来解决此问题,例如:

 join l in location.tblLocations
 on new { k.MemberID, k.LocationID } equals
 new { MemberID = l.MemberId, LocationID = l.LocationId }