我正在使用Telerik WPF數據網格上的堆疊標題。我接近這個問題的方式是爲我的數據創建一個平坦的視圖。例如。展平集合集合以便在WPF數據網格上顯示
它會顯示如下:
Person A |人B |人C
月|收入月份|收入月份|收入
我有一個包含他們各自的月份和收入清單的人的集合。
因此,我想把每個人都帶到同一級別或更簡單的條件下,我想要創建一個包含所有月份和收入水平的單一列表。 什麼是最好的方法來解決這個問題?
我正在使用Telerik WPF數據網格上的堆疊標題。我接近這個問題的方式是爲我的數據創建一個平坦的視圖。例如。展平集合集合以便在WPF數據網格上顯示
它會顯示如下:
Person A |人B |人C
月|收入月份|收入月份|收入
我有一個包含他們各自的月份和收入清單的人的集合。
因此,我想把每個人都帶到同一級別或更簡單的條件下,我想要創建一個包含所有月份和收入水平的單一列表。 什麼是最好的方法來解決這個問題?
我不確定您是否想要一個包含多次人員列表或只是收入列表的列表。我根據不同的要求和我不得不對你的班級結構進行的猜測給你一些解決方案。
首先假設您需要每個項目具有某人,月份和收入的列表,並且您具有包含兩個包含列表的人員類別的結構(一個用於收入,另一個用於在索引上同步的月份您可以使用下面的LINQ查詢的一個變體來創建枚舉
var flatList = from person in persons
from month in person.Month.Select((month, index) => new {Month = month, Index = index})
from amount in person.Amount.Select((amount, index) => new { Amount = amount, Index = index })
where month.Index == amount.Index
select new { Name = person.Name, Month = month.Month, Amount = amount.Amount};
相反,如果你只月份和金額想給你會寫以下相同的結構:
var flatList = from person in persons
from month in person.Month.Select((month, index) => new {Month = month, Index = index})
from amount in person.Amount.Select((amount, index) => new { Amount = amount, Index = index })
where month.Index == amount.Index
select new { Month = month.Month, Amount = amount.Amount};
相反,如果你有一個人的名單有在一個月匹配和金額,你可以寫一些像這樣的收益對象:
var flatList = from person in persons
from earning in person.Earnings
select new { Pers = person.Name, Month = earning.Month, Amount = earning.Amount };
再或者,如果你不想讓你使用人:
var flatList = from person in persons
from earning in person.Earnings
select new {Month = earning.Month, Amount = earning.Amount };
希望其中一個就是你要找的,否則請進一步澄清你的問題,因爲我誤解了。
正如其他人所說,沒有看到更多的代碼就很難具體。但是,一般來說,展平收藏品就是the SelectMany() LINQ extension method的作品。
如果您可以向我們展示代表您的集合的代碼,那將有所幫助。 – Larsenal 2010-11-11 23:22:43