分组后,我可以在LINQ查询中引用原始IEnumerable的元素吗?

时间:2010-05-12 10:14:04

标签: linq group-by

示例:

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?

谢谢!

1 个答案:

答案 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 
    }
} 
相关问题