c# – LINQ:从第一个项目以外的每个组中选择所有项目

c# – LINQ:从第一个项目以外的每个组中选择所有项目,第1张

概述可以轻松选择每组中的第一组: var firstOfEachGroup = dbContext.Measurements .OrderByDescending(m => m.MeasurementId) .GroupBy(m => new { m.SomeColumn }) .Where(g => g.Count() > 1) 可以轻松选择每组中的第一组:
var firstOfEachGroup = dbContext.Measurements            .OrderByDescending(m => m.MeasurementID)            .GroupBy(m => new { m.someColumn })            .Where(g => g.Count() > 1)            .Select(g => g.First());

但…
问题:如何从第一个项目以外的每个组中选择所有项目?

var everythingButFirstOfEachGroup = dbContext.Measurements            .OrderByDescending(m => m.MeasurementID)            .GroupBy(m => new { m.someColumn })            .Where(g => g.Count() > 1)            .Select( ...? );

附加信息:
我的真正目标是删除除最后一个之外的所有重复项(以批量方式,即:不使用内存中的foreach),因此在上一个查询之后我想使用RemoveRange:

dbContext.Measurements.RemoveRange(everythingButFirstOfEachGroup);

所以,如果我的问题毫无意义,这些信息可能会很方便.

解决方法 使用跳过(1)跳过第一条记录并选择其余记录.

就像是:

var firstOfEachGroup = dbContext.Measurements                    .OrderByDescending(m => m.MeasurementID)                    .GroupBy(m => new { m.someColumn })                    .Where(g => g.Count() > 1)                    .SelectMany(g => g.OrderByDescending(r => r.someColumn).Skip(1));

见:Enumerable.Skip

如果您不需要展平的集合,请将SelectMany替换为Select in code snippet.

总结

以上是内存溢出为你收集整理的c# – LINQ:从第一个项目以外的每个组中选择所有项目全部内容,希望文章能够帮你解决c# – LINQ:从第一个项目以外的每个组中选择所有项目所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1250239.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存