[英]group list by property and where it appears more than once
我有一個學生類型的對象列表。
public class Student
{
string FirstName
string Surname
int Age
}
我希望將具有相同姓氏的學生歸為一組,並返回一個姓氏出現多次的那些姓氏列表。 例如,
Surname
Bloggs
Joe
Bloggs
Smith
Tom
Smith
我的新清單只有
Bloggs
Smith
這是我當前正在使用的代碼,但是我的linq語句中是否有一種方法可以指定返回出現多次的姓氏?
var res = hldList.GroupBy(hld => hld.MyID).ToList();
foreach(var id in res)
{
var total = id.Count();
if(total >1)
// do something
}
在SurName
上分組列表,並過濾計數大於1的那些:
var duplicateSurNames = ldList.GroupBy(hld => hld.Surname)
.Where(g=>g.Count() > 1)
.Select(x=>x.Key).ToList();
hldList
.GroupBy(hld => hld.SurName)
.Select(hld => new { key = hld.Key, count = hld.Count() })
.Where(hld => hld.count > 1)
.ToList();
如果您不希望計數,則可以在末尾添加另一個投影:
.Where(hld => hld.count > 1)
.Select(hld => hld.key)
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.