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; }
}
首先,join m in m
应该是join m in m2
。其次,在LINQ中equals
的操作数顺序很重要,所以应该是l.Name equals m.Name
。
与SQL相反,LINQ对比较表达式中操作数的顺序很敏感。在equals
操作符周围交换m.Name
和l.Name
:
join m in m2 on l.Name equals m.Name