如何在具有两个以上字段的对象上使用 Linq 返回两个字段

  • 本文关键字:字段 两个 对象 返回 Linq c# linq
  • 更新时间 :
  • 英文 :


我想做的是我在MySQL中发现的常见内容,即为每个唯一/不同的结果选择所有字段,以及该数据子集中另一个字段的总和。

以下应该复制一些简单易用的东西,以便看到我的意思是数据类型:

public class Stock {
   public int id {get;set;}
   public int count {get;set;}
   public string location {get;set;}
   public Stock() { }
}
public class Foo {
   public void Bar() {
        List<Stock> Stocks = new List<Stock>()
        {
            new Stock
            {
                id = 137829,
                count = 5,
                location = "Ottawa"
            },
            new Stock
            {
                id = 137829,
                count = 27,
                location = "Toronto"
            },
            new Stock
            {
                id = 137830,
                count = 8,
                location = "Toronto"
            }
        };
        var result = Stocks.DistincyBy( s => s.id);
   }
}

我想存储在result中的内容如下(以这段代码为例,实际项目的结构更复杂)。

  • id = 137829,计数 = 32
  • id = 137830,计数 = 8

我知道我可以使用.Sum(),但在这种情况下,我希望将一个字段不同的位置相加。如何实现这一点(我更喜欢我的 Linq 是内联语法而不是 sql 样式查询)

使用 GroupBy 获取不同的分组,然后Select到您的对象中。例如:

var result = Stocks.GroupBy(s => s.Id).Select(g => new 
{
   Id = g.Key,
   Count = g.Sum(i => i.Count)
};

最好创建一个命名类进行选择,但语法将非常相似。

相关内容

  • 没有找到相关文章

最新更新