天天看點

C# 将list分組,每組取第一個

//類型      
class Obj
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }      
//list      
List<Obj> list= new List<Obj>()
            {
                new Obj(){Id = 1,Name = "B"},
                new Obj(){Id = 1,Name = "A"},
                new Obj(){Id = 3,Name = "E"},
                new Obj(){Id = 2,Name = "D"},
                new Obj(){Id = 4,Name = "F"},
                new Obj(){Id = 2,Name = "C"},
            };      

以下是兩種達到目的的寫法,其實就是一種。

var result = list.GroupBy(x => x.Id).Select(groups => new {FirstOrDefault = groups.FirstOrDefault()});      
var result = from x in list group x by x.Id into groups
                         select new {FirstOrDefault = groups.FirstOrDefault()};