在下面的示例数据中,我需要找到有多少TransitMapSegmentID匹配TransitLine的10803 TransitMapSegmentID,自101和102匹配后它将为2。
我一直在看这几个小时,我有点眼睛,并会感激一些帮助。谢谢!
public class TransitLineSegment
{
public int TransitLineID { get; set; }
public string TransitLineName { get; set; }
public int TransitMapSegmentID { get; set; }
public string HexColor { get; set; }
public double[][] Coordinates { get; set; }
public int Width { get; set; }
}
示例数据
TransitMapSegmentID TransitLineID
101 10803
102 10803
64 10807
67 10807
101 10807
102 10807
答案 0 :(得分:2)
您可以合并Where
过滤器和GroupBy
:
var result = transitLineSegments
.Where(ls => ls.TransitLineID == 10803)
.GroupBy(ls => ls.TransitMapSegmentID)
.Select(grp => grp.Count());
答案 1 :(得分:1)
使用GroupBy方法。您应该能够通过TransitLineID进行分组并获取每个ID的列表,您可以在其中获取第一个ID或计算它们。
var uni = from segment in segments
group segment by segment.TransitLineID into segmentGroup
select new { Id = segmentGroup.Key, Count = segmentGroup.Count() };
foreach(var seg in uni)
Console.WriteLine ("Id: {0}, Count: {1}", seg.Id, seg.Count);