这是对的 这是错误
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()}
我想知道为什么我不能按" item2.UserName"
分组答案 0 :(得分:2)
你不能因为item2.UserName
不是引用temps
的随机元素的变量,就像temp3
那样。
但为什么我可以分组
你可以分组,因为范围变量 - 这个变量的正式名称 - 被称为item1
对于集合是可见的,你正试图这样做,而范围变量item2
不是。
<强>更新强>
一个很棒的地方,你可以在其中找到关于范围变量的许多信息以及更多关于LINQ
的内部工作原理的Reimplementing LINQ to Objects: Part 41 - How query expressions work,作者是Jon Skeet。
答案 1 :(得分:0)
因为您正在执行group ... into
变量temp2
仅作为临时变量存在,以便于加入并创建temps
。
在您的第一个查询中,变量item1
存在于group ... into
之外。