簡體   English   中英

如何對 C# Linq 中兩列的值進行分組和求和

[英]How to Group and sum values of two Column in C# Linq

在此處輸入圖像描述

我有這個代碼。 我無法添加更多列,例如日期、名稱...

        var dtt = dt.AsEnumerable()
              .GroupBy(p => p.Field<Int64>("ID"))
              .Select(p => new
              {
                  ID = p.Key,
                  Debit = p.Sum(a => a.Field<Decimal>("Debit")),
                  Credit = p.Sum(a => a.Field<Decimal>("Credit"))
              }).ToArray();

您可以通過以下兩種方式之一獲取姓名和日期:

如果Id將始終與同一個用戶(即他們的名字)相關聯,那么您可以按 IdName 分組並返回Date的集合:

var dtt = database.AsEnumerable()
                .GroupBy(p => new { p.Field<Int64>("ID"), p.Field<String>("Name")})
                .Select(p => new
                {
                    Id = p.Key.ID,
                    Name = p.Key.Name,
                    Date = p.Select(a => a.Date),
                    Debit = p.Sum(a => a.Field<Decimal>("Debit")),
                    Credit = p.Sum(a => a.Field<Decimal>("Credit"))

                }).ToArray();

或者您可以使用評論中提到的.First() (並且仍然返回Date的集合):

var dtt = database.AsEnumerable()
                    .GroupBy(p => p.Id)
                    .Select(p => new
                    {
                        Id = p.Id,
                        Name = p.First().Field<String>("Name"),
                        Date = p.Select(a => a.Field<DateTime>("Date")),
                        Debit = p.Sum(a => a.Field<Decimal>("Debit")),
                        Credit = p.Sum(a => a.Field<Decimal>("Credit"))

                    }).ToArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM