我有一个由sql查询填充的数据表,它有ID,subject,Description
根据主题和描述值,我需要形成如下的数据表,
对于Ids 123,234值具有相同的主题和描述,因此我需要合并为单行,并且需要在单个ID列中设置两个Id值。
我怎样才能做到这一点?可能吗 ?任何想法都会非常感激。
答案 0 :(得分:1)
请尝试以下操作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DataTable dt1 = new DataTable();
dt1.Columns.Add("ID", typeof(int));
dt1.Columns.Add("Subject", typeof(string));
dt1.Columns.Add("Description", typeof(string));
dt1.Rows.Add(new object[] { 123, "Test", "Test" });
dt1.Rows.Add(new object[] { 234, "Test", "Test" });
dt1.Rows.Add(new object[] { 456, "Test 1", "Test1" });
dt1.Rows.Add(new object[] { 789, "Test 1", "Test1" });
DataTable dt2 = new DataTable();
dt2.Columns.Add("ID", typeof(string));
dt2.Columns.Add("Subject", typeof(string));
dt2.Columns.Add("Description", typeof(string));
dt2 = dt1.AsEnumerable()
.GroupBy(x => x.Field<string>("Subject"))
.Select(x => dt2.Rows.Add(new object[] {
string.Join(",", x.Select(y => y.Field<int>("ID").ToString()).ToArray()),
x.Key,
x.FirstOrDefault().Field<string>("Description")
})).CopyToDataTable();
}
}
}