LINQ在给定列表中获得第一个值

时间:2012-02-01 14:58:07

标签: linq

我有一个列表(主列表),其中包含以下内容

PsID  Nominprsn
----  ---------
1     James
2     Troy
2     William
3     Mike
4     Jason
4     Hendry

我需要从给定的PsID获取名字 所以结果就是这样

PsID  Nominprsn
----  ---------
1     James
2     Troy
3     Mike
4     Jason

我尝试了以下但未成功,因为我不知道如何获得第一个PsID

var proglis = (from ts in mainlist
               group ts by new { ts.PsID, Nominprsn} into grp
               select new {grp.Key.PsID grp.Key.Nominprsn}).ToList(); 

3 个答案:

答案 0 :(得分:2)

要从每个组中选择第一项,请使用以下查询:

var query = mainlist.GroupBy(o => o.PsID)
                    .Select(g => new { PsID = g.Key, g.First().Nominprsn })
                    .ToList();

这将返回您在问题中显示的相同结果。结果将是IEnumerable个匿名类型,其属性名为PsIDNominprsn

答案 1 :(得分:1)

您应该如何做到这一点:

var proglis = (from ts in mainlist
               group ts by ts.PsID into grp
               select new 
               {
                 Id = grp.Key,
                 Name = grp.First().Nominprsn
               }).ToList();

答案 2 :(得分:0)

或者尝试Distinct或DistinctBy(o => o.Key.PsID)