Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq选择第一组_C#_.net_Linq - Fatal编程技术网

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();

你说的团体是什么意思?