2010-05-12 12 views
0

實施例:經過分組後,我可以在LINQ查詢中引用原始IEnumerable的元素嗎?

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

分爲子句清理範圍。此時,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 
    } 
} 
相關問題