簡體   English   中英

如何從對象列表中僅按對象值獲取一個

[英]How to get from a object list only one by object value

我有一個完整的對象“人”列表。

我需要一個僅包含每個團隊的第一個人的簡短列表,因此在每種情況下都需要某種分組和第一項

如何將完整列表轉移到每個組的第一個項目和 teamNumber 的短列表中?

List<Person> list = new List<Person>()
{
    new Person(){TeamNumber = 1, Name = "Peter"},
    new Person(){TeamNumber = 1, Name = "Klaus"},
    new Person(){TeamNumber = 1, Name = "Maria"},
    new Person(){TeamNumber = 1, Name = "Gerda"},
    new Person(){TeamNumber = 2, Name = "Ralf"},
    new Person(){TeamNumber = 2, Name = "Oskar"},
    new Person(){TeamNumber = 2, Name = "Anna"},
    new Person(){TeamNumber = 3, Name = "Hannah"},
    new Person(){TeamNumber = 3, Name = "Susi"},
    new Person(){TeamNumber = 4, Name = "Ida"}
};

我喜歡得到一個簡短的列表,例如:(總是每個團隊的第一個人)

  • TeamNumber = 1, Name = "Peter"
  • TeamNumber = 2, Name = "拉爾夫"
  • TeamNumber = 3, Name = "Hannah"
  • TeamNumber = 4, Name = "Ida"

類人:

public class Person
{
    public int TeamNumber { get; set; }
    public string Name { get; set; }
}
 var result= list.GroupBy(t => t.TeamNumber).Select(p => p.First()).ToList();

我會這樣做:

首先,您GroupBy TeamNumber 以便(將它們分組,所以您只會得到一個。然后您獲取第一個記錄( Person )並為該 TeamNumber 選擇它。然后您對整個列表執行此操作,並將其作為新列表返回。

var shortList =  list.GroupBy(t => t.TeamNumber).Select(e => e.FirstOrDefault()).ToList();

然后我建議你閱讀linq

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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