Linq to Select First Group
本文关键字:Group First Select to Linq | 更新日期: 2023-09-27 18:14:00
我想选择列表中的第一个组。有更好的方法吗?
我是这样做的:
var match = (from m in recordList select m).FirstOrDefault();
var matches = recordList.Where(d => d.DateDetails == match.DateDetails);
var lookup = matches.ToLookup(a => a.DateDetails).First();
lookaheadList = lookup.ToList();
我选择第一个组,并将其推入第二个名为lookheadlist的列表。
My DATA如下:
DateDetails Track Details
0025 ABCD
0025 EFGH
0030 XXXXX
0030 XXXXX
不需要ToLookup
。查找组由不同的DateDetails
,但matches
已经被过滤到一个单一的日期,所以已经只有一个组选择。
你可以跳过过滤器,直接输入:
var match = recordList.ToLookup(a => a.DateDetails).First()
lookaheadList = match.ToList();
然而,这是多余的,原因如下:
如果您不存储
ToLookup
的结果并使用它按日期查找其他组,则没有必要创建查找对象-您可以直接使用GroupBy。如果只需要第一组,则根本不需要任何分组(
ToLookup
或GroupBy
)。
直接获取与第一次约会匹配的项目,使用:
var firstDate = recordList.First().DateDetails;
var matches = recordList.Where(d => d.DateDetails == firstDate)
lookaheadList = matches.ToList();
假设
group1 = "025"
和
group2= "030"
我想你漏掉了一个"group by"
c# LINQ Query - Group By
我建议你使用GroupBy
var match = (from m in recordList select m).FirstOrDefault();
var firstGroup= recordList.Where(d => d.DateDetails == match.DateDetails).GroupBy(x=> x.DateDetails).Select(x => x.First());
,然后使用firstGroup
变量筛选
阅读@Jon Skeet关于illookup和IGrouping性能比较的回答
请记住,查找是一个"立即执行"的操作(立即)执行),而GroupBy被延迟