为什么使用 GROUP BY 后列表中所有对象的一个字段设置为零

本文关键字:一个 字段 设置 对象 BY GROUP 列表 为什么 | 更新日期: 2023-09-27 18:34:28

在下面的代码中,val.support中的每个对象都有name,supportamount和GFP,所以一切都很好。当构建支持者对象的积极支持者列表(积极支持者列表位于类玩家的字段上(时,列表中所有支持者的 GFP 字段为 0。为什么以及我应该怎么做才能解决这个问题?

   for (int i = 0; i < result["modelData"]["rows"].Count; i++)
   {
    row = result["modelData"]["rows"][i];
    if (row["f"][0]["v"] != null && row["f"][1]["v"] != null)
  {
  if (dictionary.ContainsKey((string)row["f"][0]["v"]))
  val.supporters.Add(new Supporter { name = (string)row["f"][0]["v"], supportAmount = (double)row["f"][1]["v"], GFP = dictionary[(string)row["f"][0]["v"]] });
   }
   }

  val.positiveSupporters = val.supporters.GroupBy(x => x.name).Select(x => new Supporter { name = x.Key, supportAmount = x.Sum(y => y.supportAmount)}).ToList();

为什么使用 GROUP BY 后列表中所有对象的一个字段设置为零

或者更好的是,在流程的第二部分获取 GFP。这似乎是基于分组键的查找。

var positiveSupporters = supporters.GroupBy(x => x.name).Select(x => new Supporter { name = x.Key, supportAmount = x.Sum(y => y.supportAmount), GFP = dictionary[x.Key] }).ToList();

如评论中所述,我没有选择 GFP,它被设置为默认值 0。鉴于每个名称在我的问题中都有一个固定的 GFP,我使用 firsr(( 来选择 GFP:

val.positiveSupporters = val.supporters.GroupBy(x => x.name).Select(x => new Supporter { name = x.Key, supportAmount = x.Sum(y => y.supportAmount),GFP = x.First().GFP}).ToList();