【问题标题】:How to count parent's property with linq如何用linq计算父母的财产
【发布时间】:2014-02-26 12:24:05
【问题描述】:

我有 2 个像这样的对象集合

public class Meter
    {
        public string UID { get; set; }
        public string NR { get; set; }
        public List<GMSData> data { get; set; }
    }

public class GSMData : Meter
    {
        public DateTime TimeStamp { get; set; }
        public int CellID { get; set; }
    }

 public static List<Meter> GetMeterUIDList()
        {
            return meters.Values.ToList();
        }
        public static List<GSMData> GetGsmdataList()
        {
            return meters.Values.SelectMany(m => m.Gsmdata)
                .OrderBy(t => t.TimeStamp)
                .ToList();
        }

我需要获取每个 CellId 的所有 NR,并计算每个 CellID 上有多少 NR。 我该怎么做?

【问题讨论】:

  • 两个系列?给他们看。
  • 看起来我们对您的问题没有完整的了解。你有一个 List 或者你想做什么:)
  • 我希望它现在更有意义:)

标签: c# linq wpfdatagrid


【解决方案1】:

也许:

var idGroups = meters
    .SelectMany(m => m.data)
    .GroupBy(d => d.CellID)
    .Select(g => new { CellID = g.Key, UniqueNr = g.Select(m => m.NR).Distinct() });

foreach (var g in idGroups)
    Console.WriteLine("CellID: {0}  Count: {1}", g.CellID, g.UniqueNr.Count());

如果 NR 不需要唯一,请删除 Distinct

【讨论】:

  • 一个愚蠢的问题,但是您如何将其返回到列表或字典中?
  • @user3240428:什么列表或字典?
  • 公共字典 GetCellIDMCount() fx.
  • 那么为什么要用字符串作为计数?
  • 您只需将.ToDictionary(x =&gt; x.CellID, x =&gt; x.UniqueNr.Count()); 附加到上面的查询中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多