-1

在下面的示例数据中,我需要找到与 TransitLine 的 10803 个 TransitMapSegmentID 匹配的 TransitMapSegmentID,这将是 2,因为 101 和 102 匹配。

我已经看了几个小时了,我有点眼花缭乱,希望能得到一些帮助。谢谢!

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
4

2 回答 2

2

你可以结合一个Where过滤器和GroupBy

var result = transitLineSegments
            .Where(ls => ls.TransitLineID == 10803)
            .GroupBy(ls => ls.TransitMapSegmentID)
            .Select(grp => grp.Count());    
于 2012-05-31T22:27:16.887 回答
1

使用GroupBy方法。您应该能够按 TransitLineID 分组并获取每个 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);
于 2012-05-31T22:19:58.397 回答