簡體   English   中英

按屬性分組的列表以及出現多次的列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM