LINQ Join无法识别符号

时间:2014-05-31 23:32:33

标签: c# linq

有人可以告诉我为什么这个简单的连接不会编译?它不会识别财产"名称"或匿名类型m和l。错误消息是:

  

错误1名称' m'不在' equals'左侧的范围内。   考虑交换等于' equals'两侧的表达式。

     

错误2名称' l'不等于'等于'#39;的右侧。   考虑更换等号'。

两侧的表达式
var l1 = new List<L1>();
var m2 = new List<M2>();

var rs = from l in l1
         join m in m2 on m.Name equals l.Name
         select new {l1};

public class L1
{
    public string Name { get; set; }
}
public class M2
{
    public string Name { get; set; }
}

2 个答案:

答案 0 :(得分:3)

首先,join m in m应该是join m in m2。其次,在equals中操作数的LINQ顺序很重要,所以它应该是l.Name equals m.Name

答案 1 :(得分:1)

与SQL相反,LINQ对比较表达式中操作数的顺序很敏感。在m.Name运算符周围交换l.Nameequals

join m in m2 on l.Name equals m.Name