有幾個類似的探測帖子,但沒有那樣做我想要的。如何動態GroupBy使用Linq
好了,所以可以想象,我有以下的數據結構(簡化這個LinqPad例如)
public class Row
{
public List<string> Columns { get; set; }
}
public List<Row> Data
=> new List<Row>
{
new Row { Columns = new List<string>{ "A","C","Field3"}},
new Row { Columns = new List<string>{ "A","D","Field3"}},
new Row { Columns = new List<string>{ "A","C","Field3"}},
new Row { Columns = new List<string>{ "B","D","Field3"}},
new Row { Columns = new List<string>{ "B","C","Field3"}},
new Row { Columns = new List<string>{ "B","D","Field3"}},
};
對於屬性「數據」時,用戶將告訴我哪列序號到的GroupBy;他們可能會說「不按任何分組」,或者他們可能會說「按列[1]」或「按列[0]分組」和列[1]「。
如果我想組由單一的專欄中,我可以使用:
var groups = Data.GroupBy(d => d.Columns[i]);
如果我想組由2列,我可以使用:
var groups = Data.GroupBy(d => new { A = d.Columns[i1], B = d.Columns[i2] });
然而,數列是可變的(零 - >很多);數據可能包含數百個列,用戶可能想要GroupBy數十列。
所以問題是,如何在運行時(動態)創建此GroupBy?
感謝
格里夫
您可以用某種方式構建Lambda表達式[非常類似於有關動態OrderBy的非常類似問題的答案](http://stackoverflow.com/a/233505/424129)。 –