C# 为什么我能';t访问;第2项:用户名“;

C# 为什么我能';t访问;第2项:用户名“;,c#,linq,C#,Linq,这是正确的 这就是错误所在 我想知道为什么我不能按“item2.UserName”分组,因为item2.UserName不像temp3那样是一个引用temps随机元素的变量 但是为什么我可以分组呢 您可以按分组,因为名为item1的范围变量(这是此类变量的正式名称)对组可见,您正在尝试这样做,而范围变量item2则不可见 更新 Jon Skeet是一个很棒的地方,在这里你可以找到许多关于范围变量的信息,以及更多关于LINQ内部工作的信息。因为你正在做一个小组。。。into变量temp2仅作为临

这是正确的 这就是错误所在


我想知道为什么我不能按“item2.UserName”分组,因为
item2.UserName
不像
temp3
那样是一个引用
temps
随机元素的变量

但是为什么我可以分组呢

您可以按分组,因为名为
item1
的范围变量(这是此类变量的正式名称)对组可见,您正在尝试这样做,而范围变量
item2
则不可见

更新


Jon Skeet是一个很棒的地方,在这里你可以找到许多关于范围变量的信息,以及更多关于
LINQ
内部工作的信息。

因为你正在做一个
小组。。。into
变量
temp2
仅作为临时变量存在,以便于联接和创建
temps

在第一次查询中,变量
item1
存在于
组之外。。。进入

但为什么我可以按“item1.Name”分组,我认为这与“item2.UserName”相同
from item1 in EL_Course_Courses join item2 in Users on item1.Speaker equals item2.Id into temps 

from item3 in temps group item3 by item1.Name into g 

//from item3 in temps group item3 by item2.UserName into g 

select new {g.Key, Amount=g.Count()}