我有一份EQModel。
public class EQModel
{
public string IncEpicentre { get; set; }
public decimal MagnitudeInMl { get; set; }
public int TotalHits { get; set; }
}
我想将此列表分组为不同的位置以及不同范围的MagnitudesInMl值。
范围:{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() });
现在,我想将这两个列表分组。
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
您始终可以使用由您的条件组成的密钥进行分组。可以使用匿名类,如下所示:
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()});