110,502
社区成员
发帖
与我相关
我的任务
分享
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("ID", typeof(int)),
new DataColumn("Name", typeof(string)),
new DataColumn("Work", typeof(string)) });
dt.Rows.Add(new object[] { 1, "张三", "test1" });
dt.Rows.Add(new object[] { 2, "张三", "test1" });
dt.Rows.Add(new object[] { 3, "李四", "test2" });
dt.Rows.Add(new object[] { 4, "王五", "test3" });
DataTable dtResult = dt.Clone();
dtResult.Columns.Add(new DataColumn("worknum", typeof(int)));
dtResult.Columns[0].AutoIncrement = true;
dtResult.Columns[0].AutoIncrementSeed = 1;
dtResult.Columns[0].AutoIncrementStep = 1;
int i = 1;
var query = from t in dt.AsEnumerable()
group t by new { t1 = t.Field<string>("Name"), t2 = t.Field<string>("Work") } into m
select new
{
ID = i++,
Name = m.Key.t1,
Work = m.Key.t2,
worknum = m.Count()
};
query.ToList().ForEach(q => dtResult.Rows.Add(q.ID, q.Name, q.Work, q.worknum));
string res = "";
foreach (DataRow item in dtResult.Rows)
{
res += item[0].ToString() + " ";
res += item[1].ToString() + " ";
res += item[2].ToString() + " ";
res += item[3].ToString() + " " + "\r\n";
}
label1.Text = res;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("work", typeof(string));
dt.Rows.Add(1, "张三", "test1");
dt.Rows.Add(2, "张三", "test1");
dt.Rows.Add(3, "李四", "test2");
dt.Rows.Add(4, "王五", "test3");
var result = dt.AsEnumerable()
.GroupBy(t => new { name = t.Field<string>("name"), work = t.Field<string>("work") })
.Select(t => new { name = t.Key.name, work = t.Key.work, worknum = t.Count() });
int index = 0;
foreach (var r in result)
{
Console.WriteLine("{0} {1} {2} {3}", ++index, r.name, r.work, r.worknum);
}
}
}
}
static void Main(string[] args)
{
//测试数据
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(System.Int32));
dt.Columns.Add("name", typeof(System.String));
dt.Columns.Add("work", typeof(System.String));
DataRow dr1 = dt.NewRow();
dr1[0] = 1; dr1[1] = "张三"; dr1[2] = "test1";
DataRow dr2 = dt.NewRow();
dr2[0] = 2; dr2[1] = "张三"; dr2[2] = "test1";
DataRow dr3 = dt.NewRow();
dr3[0] = 3; dr3[1] = "李四"; dr3[2] = "test2";
DataRow dr4 = dt.NewRow();
dr4[0] = 4; dr4[1] = "王五"; dr4[2] = "test3";
dt.Rows.Add(dr1);
dt.Rows.Add(dr2);
dt.Rows.Add(dr3);
dt.Rows.Add(dr4);
//分组
DataTable dt1 = dt.Clone();
dt1.Columns.Add("worknum");
var o = dt.AsEnumerable().GroupBy(x => new{name = x["name"],work = x["work"]})
.Select(x => new
{
id=x.First()["id"],
name = x.Key.name,
work=x.Key.work,
worknum=x.Count(),
}).ToList() ;
o.ForEach(x =>
{
DataRow row = dt1.NewRow();
row[0]=x.id;
row[1]=x.name;
row[2]=x.work;
row[3] = x.worknum;
dt1.Rows.Add(row);
});
foreach (DataRow i in dt1.Rows)
{
Console.WriteLine("{0} {1} {2} {3}", i[0], i[1], i[2],i[3]);
}
Console.ReadLine();
}