我特別的例子是相當複雜的,但我認爲這個概念同樣適用於類似日誌系統的東西,所以我會用它來代替,以便於解釋。這是一個虛構的例子,請不要喋喋不休或感到苦惱的是achitectually,編程或道德上錯誤的例子本身:)LINQ:從IEnumerable中選擇Distinct/GroupBy並排序 - 可能嗎?
假設你有這樣的:
class LogEntry
{
int ID;
int UserName;
datetime TimeStamp;
string Details;
}
和你拉一組像這樣的數據:
ID Username Timestamp Details
1 foo 1/01/2010 Account created
2 zip 2/02/2010 Account created
3 bar 2/02/2010 Account created
4 sandwich 3/03/2010 Account created
5 bar 5/05/2010 Stole food
6 foo 5/05/2010 Can't find food
7 sandwich 8/08/2010 Donated food
8 sandwich 9/09/2010 Ate more food
9 foo 9/09/2010 Ate food
10 bar 11/11/2010 Can't find food
我想要做的就是爲每個用戶選擇(即用戶名的GroupBy)只有最後一個記錄(即排序時間戳降序)。我可以將我的頭腦與Distinct區分開來,但GroupBy的程度較低,但是將所有這些內容組合在一個語句中,該語句也會返回非獨特/分組字段/屬性並按時間戳排序,這讓我很頭疼。
什麼應該站出來與上面的例子是:
ID Username Timestamp Details
2 zip 2/02/2010 Account created
8 sandwich 9/09/2010 Ate more food
9 foo 9/09/2010 Ate food
10 bar 11/11/2010 Can't find food
我不想「騙」和訴諸做的長篇大論方式,當性能不是關鍵在這裏,我我們可以在一條LINQ聲明中完全確信它可以完成。
你想如何最終排序? – Will 2010-10-19 05:16:49