我的对象(照片)具有3个属性(ID,名称,照片)
身份证姓名照片***********************1个1.jpg2个2.jpg3 b 3.jpg4 b 4.jpg5 c 5.jpg*************************我如何使用linq lambda获得groupby(name)中的第一条记录?如下表身份证姓名照片**********************1个1.jpg3 b 3.jpg5 c 5.jpg***********************
我使用此代码:
photos.GroupBy(x => x.Name).FirstOrDefault();
但是结果只是(name:a),我需要(ID,Name,Photo)值
photos.GroupBy(p => p.Name).Select(p => p.First()).ToList();
[当您执行GroupBy()时,结果是一个IGroupings的IEnumerable,它将是IGrouping的,因此当您尝试访问第一个元素时,您不会得到第一张照片,但是第一个IGrouping将在其中包含2个元素示例。
获得第一组第一张照片的正确方法是这样的:
var firstGroup = photos.GroupBy(x => x.Name).OrderBy(y => y.Key).First(); //or FirstOrDefatult() if you prefer
Photo firstPhotoInGroup = firstGroup.First();
一旦获得该组,您就可以像使用带有Key属性的IEnumerable一样使用它