【发布时间】:2020-11-17 21:33:43
【问题描述】:
我有一个数据表,我需要合并IPC 和Second Best Issuer 列中具有相同值的单元格,并将Dirty value PC 和Par Value LC 列中的值相加。所有的值都是字符串类型。
我是查询的初学者,我正在寻找使用 LINQ 在 C# 中执行此操作的简单方法。 谢谢你
【问题讨论】:
我有一个数据表,我需要合并IPC 和Second Best Issuer 列中具有相同值的单元格,并将Dirty value PC 和Par Value LC 列中的值相加。所有的值都是字符串类型。
我是查询的初学者,我正在寻找使用 LINQ 在 C# 中执行此操作的简单方法。 谢谢你
【问题讨论】:
尝试以下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication11
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("IPC", typeof(int));
dt.Columns.Add("Dirty", typeof(int));
dt.Columns.Add("Second", typeof(string));
dt.Columns.Add("Par", typeof(int));
dt.Rows.Add(new object[] { 1, 5, "BB", 55 });
dt.Rows.Add(new object[] { 1, 4, "B", 30 });
dt.Rows.Add(new object[] { 2, 15, "AAA", 20 });
dt.Rows.Add(new object[] { 1, 10, "BB", 80 });
dt.Rows.Add(new object[] { 2, 20, "AA", 90 });
dt.Rows.Add(new object[] { 2, 30, "AAA", 50 });
dt.Rows.Add(new object[] { 1, 5, "B", 60 });
dt.Rows.Add(new object[] { 2, 15, "AA", 70 });
var groups = dt.AsEnumerable().GroupBy(x => new {ipc = x.Field<int>("IPC"), second = x.Field<string>("Second")}).ToList();
DataTable dtsum = dt.Clone();
foreach(var group in groups)
{
dtsum.Rows.Add(new object[] {group.Key.ipc, group.Sum(y => y.Field<int>("Dirty")), group.Key.second, group.Sum(y => y.Field<int>("Par"))});
}
}
}
}
【讨论】: