C# Linq选择第一组
我想要一个选择列表中第一组的列表。有没有更好的办法 我是这样做的:C# Linq选择第一组,c#,.net,linq,C#,.net,Linq,我想要一个选择列表中第一组的列表。有没有更好的办法 我是这样做的: 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
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();
我选择第一组并将其放入第二个名为lookaheadlist的列表中
我的数据如下:
DateDetails Track Details
0025 ABCD
0025 EFGH
0030 XXXXX
0030 XXXXX
假定
group1=“025”
及
group2=“030”
我想你错过了一个“团体”
我建议您使用
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关于ILookup和iGroup性能比较的答案
请记住,ToLookup是一种“立即行动”的操作(立即行动)
执行)而GroupBy被延迟
无需使用
ToLookup
。按不同的DateDetails
查找组,但是匹配项
已筛选为单个日期,因此只有一个组可供选择
您可以跳过过滤器,只需执行以下操作:
var match = recordList.ToLookup(a => a.DateDetails).First()
lookaheadList = match.ToList();
但是,出于以下几个原因,这是多余的:
- 如果您没有存储
的结果并使用它按日期查找其他组,那么创建查找对象就没有意义了——您可以使用它ToLookup
- 如果只需要第一组,则根本不需要任何分组(通过
或ToLookup
)GroupBy
var firstDate = recordList.First().DateDetails;
var matches = recordList.Where(d => d.DateDetails == firstDate)
lookaheadList = matches.ToList();
你说的团体是什么意思?