什么';在LINQ连接中,等号的左侧和右侧之间的差是多少
在Linq中执行连接时,例如什么';在LINQ连接中,等号的左侧和右侧之间的差是多少,linq,Linq,在Linq中执行连接时,例如 来自c in客户将x加入x上的某些客户列表中。Id等于c.Id 你会得到错误的 x不在“等于”左侧的范围内。考虑交换“相等”< /P>两边的表达式。 这很简单,但我想澄清一下为什么x不在左侧的范围内,但不知何故在equals的右侧的范围内。这只是一个约定,基本上连接的结构如下 from identifier in {outer-sequence} join identifier2 in {inner-sequence} on {outer-key-selecto
来自c in客户将x加入x上的某些客户列表中。Id等于c.Id
你会得到错误的
x不在“等于”左侧的范围内。考虑交换“相等”< /P>两边的表达式。
这很简单,但我想澄清一下为什么x不在左侧的范围内,但不知何故在
equals
的右侧的范围内。这只是一个约定,基本上连接的结构如下
from identifier in {outer-sequence}
join identifier2 in {inner-sequence}
on {outer-key-selector} equals {inner-key-selector}
identifier
和{outer key selector}
是成对的,identifier2
和{inner key selector}
-不能切换顺序,因为它们的位置在联接语法中是固定的 这与编译器将LINQ扩展到底层扩展方法的方式有关
您的查询正在转换为:
customers.Join(somelistofcustomers, c => x.Id, x => c.Id, (c, x) => ...)
两个lambda表达式c=>x.Id
&x=>c.Id
显然其局部变量超出范围。由于LINQ只是实际调用上的一层糖衣,编译器会正确地抱怨变量超出范围