示例:
from OriginalObject in ListOfOriginalObjects
group new CustomObject {
X = OriginalObject.A,
Y = OriginalObject.B
} by OriginalObject.Z into grouping
select new GroupOfCustomObjects {
Z = grouping.Key,
C = OriginalObject.C,
group = grouping
}
在查询的选择部分,我想将属性(OriginalObject.C
)添加到类型GroupOfCustomObjects
。但似乎OriginalObject
超出了查询部分的范围。我可以理解为什么,因为我没有将分组该属性,而且我也没有将该属性作为我正在分组的CustomObject
的一部分。
一种解决方法是将属性C
添加到CustomObject
,并在GroupOfCustomObjects
中读取分组中第一个CustomObject
的值。我的问题是我正在向不需要它的对象添加属性(CustomObject
),只是为了能够将它添加到GroupOfCustomObjects
。
我希望我已经正确解释了这一点!
有没有办法引用查询开头的OriginalObject?
谢谢!
答案 0 :(得分:1)
into 子句擦除范围。此时,OriginalObject将从范围中删除。
以这种方式尝试:
from OriginalObject in ListOfOriginalObjects
group OriginalObject by OriginalObject.Z into grouping
select new GroupOfCustomObjects {
Z = grouping.Key,
C = grouping.First().C,
group = grouping.Select(x =>
new CustomObject {
X = x.A,
Y = x.B
}
}