如何使用LINQ在C#列表中按多个条件分组?
我有一个EQModel的列表如何使用LINQ在C#列表中按多个条件分组?,c#,.net,linq,C#,.net,Linq,我有一个EQModel的列表 public class EQModel { public string IncEpicentre { get; set; } public decimal MagnitudeInMl { get; set; } public int TotalHits { get; set; } } 我想把这个列表分为不同的位置,也可以分为不同的震级sinml值范围 范围:{5,6,7,8} 我可以
public class EQModel
{
public string IncEpicentre { get; set; }
public decimal MagnitudeInMl { get; set; }
public int TotalHits { get; set; }
}
我想把这个列表分为不同的位置,也可以分为不同的震级sinml值范围
范围:{5,6,7,8}
我可以使用LINQ分别对它们进行分组,但无法同时使用IncEpicenter和MagnitudeInMl进行分组
对于按范围分组,我使用了:
var ranges = new[] { 5, 6,7,8 };
var lsGrouped = lsEQData.GroupBy(x => ranges.FirstOrDefault(r => r > x.MagnitudeInMl))
.Select(g => new { g.Key, TotalHits = g.Count().ToString()});
对于IncEpicenter
var lsCount = lsEQData.GroupBy(x => x.IncEpicentre)
.Select(g => new { g.Key, TotalHits = g.Count().ToString() });
现在,我想把这两个列表都分组
任何帮助都将不胜感激。您始终可以使用由两个条件组成的键进行分组。匿名类可用于此目的,如下所示:
var groupedByBothConditions = lsEQData.GroupBy(x => new
{
Range = ranges.FirstOrDefault(r => r > x.MagnitudeInMl),
IncEpicentre = x.IncEpicentre
})
.Select(g => new { g.Key, TotalHits = g.Count().ToString()});
请将您的问题包含在您用于单独分组的LINQ代码中。感谢您提高了问题的参考价值,使其更易于回答!谢谢@Nathan,我在这里做了一些编辑。谢谢@Simon。这对我来说很有用:)如果你将@Simon的答案标记为已接受,你将获得+2个重复点。太棒了@戴维坦西