我不確定這是否可能。 我的班級我有這樣看起來的列表:按照包含元素的日期排序組(LINQ)
class Person
{
string Firstname
string Lastname
DateTime Timestamp
}
現在我想通過姓和姓創建組。
- 約翰迪爾,3:12
- 約翰迪爾,6:34
- 約翰迪爾,11:12
- 湯健,1:12
- 湯健,3:49
- 湯健,4:22
- 馬庫斯·費爾,11:23
進一步,我想到排序這個羣組由他們的時間戳,最後應該是第一個,而組應該停留在列表視圖中顯示他們。
馬庫斯·費爾(組頭)
11:23(內容元素)約翰迪爾
11:12
6:34湯健
4: 22
3:49約翰迪爾
3:12湯健
1:22
希望任何Linq的天才可以幫助我解決這個問題:) 謝謝!
非常感謝謝爾蓋,工作就像一個魅力!
此外,我想爲我的組鍵創建一個自定義類,以在我的ListView標題中顯示不同的附加內容。 (不僅是拼接在一起字符串)
我想我的查詢分配給一個IEnumerable這樣的:
IEnumerable<IGrouping<Header, Person>> PersonGroups
其中報頭包含有對每個人(其他一些特性如存在也是一個國家,年齡,...每個人)。也許你也可以幫助我呢?
再次感謝謝爾蓋。通過實現一個實現ICompareable接口的Header類來解決我的問題。
IEnumerable<IGrouping<Header, Person>> PersonGroups
public class Header: IComparable<Header>
{
public Header(string firstname, string lastname)
{
Firstname= firstname;
Lastname = lastname;
}
public string Firstname{ get; set; }
public string Lastname{ get; set; }
public int CompareTo(Header that)
{
if (this.Firstname == that.Firstname&& this.Lastname == that.Lastname)
return 0;
else
return -1;
}
}
我的查詢現在看起來是這樣的:
PersonGroups= persons.OrderByDescending(p => p.Timestamp)
.GroupConsecutive(p => new Header(p.Firstname, p.Lastname));
哇,這絕對是偉大的!謝謝謝爾蓋,像一個魅力,我現在得到了我所需的團體。 我還有一個問題 - 編輯我的問題。也許你也可以幫助我呢?但是非常感謝你! – sust86
@ sust86如果你想'IGrouping'而不是'IGrouping '那麼就讓你的Header類實現IComparable - 它是默認比較器比較分組鍵所必需的 –
Nevermind,糾正了錯誤我的人際關係組成員。謝謝 ! – sust86