LINQ Join不能识别符号

本文关键字:符号 识别 不能 Join LINQ | 更新日期: 2023-09-27 18:06:01

谁能告诉我为什么这个简单的连接不会编译?它不能识别属性"Name"或匿名类型m和l。错误消息如下:

错误1名称'm'不在'equals'左边的作用域中。考虑交换'equals'两边的表达式。

错误2名称'l'不在'equals'右侧的作用域内。考虑交换'equals'两边的表达式。

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; }
}

LINQ Join不能识别符号

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

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

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