C#:合并数据表中的数据行

标签 c# linq datatable

<分区>

我有一个包含以下详细信息的数据表。

ID     |   VERSION  |   ENTITY
1      |    01      |   A01
1      |    01      |   A02
2      |    01      |   A01
2      |    01      |   A02

我想合并列 ENTITY 的值,如下所示。

ID     |   VERSION  |   ENTITY
1      |    01      |   A01/A02
2      |    01      |   A01/A02

有什么方法可以使用 Linq 实现吗?

最佳答案

您可以使用匿名类型按多个属性分组:

var result = list1.GroupBy(x=> new {x.ID, x.VERSION}).Select(
    item => new Example
    {
        ID = item.Key.ID, 
        VERSION = item.Key.VERSION,
        ENTITY = string.Join("/", item.Select(c=>c.ENTITY))
    });

然后选择适当的属性并将它们提供给您需要的类型的新对象。

输出:

enter image description here

编辑:

DataTable 中,您需要通过 [ ] 运算符访问列,但分组的原则保持不变:

示例数据表:

DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("VERSION", typeof(string));
table.Columns.Add("ENTITY", typeof(string));

table.Rows.Add(1, "01", "A01");
table.Rows.Add(1, "01", "A02");
table.Rows.Add(2, "01", "A01");
table.Rows.Add(2, "01", "A02");

分组:

var result = table.AsEnumerable().GroupBy(x => new { ID = x["ID"], VERSION = x["VERSION"]}).Select(
    item => new Example
    {
        ID = (int)item.Key.ID,
        VERSION = (string)item.Key.VERSION,
        ENTITY = string.Join("/", item.Select(c => c["ENTITY"]))
    });

关于C#:合并数据表中的数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48860394/

相关文章:

c# - 您可以将Elasticsearch “q” querystring参数解析为NEST对象吗?

c# - 投影 : filling 2 arrays at once

c# - Linq 查询在 List 对象中存储一对多集合

c# - 来自 List<Row> 的数据表

javascript - 单击数据表操作菜单中的功能

c# - 查找过去最近的日期

c# - 什么可能是我的 C# WCF 服务上的速率限制 CPU 周期?

c# - 是否可以强制仅从已知客户端调用 Web 服务?

linq - 带分组和排序的左连接

javascript - 如何使数据表按标签搜索