码迷,mamicode.com
首页 > Windows程序 > 详细

C# Distinct去重DataTable

时间:2020-03-24 14:31:05      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:code   tin   new   opp   stage   表达式   pop   ima   ack   

  • Source Data
  • 使用DataView去重
  • 使用Lambda表达式去重

1. Source Data

DataTable dtSource = new DataTable();
dtSource.Columns.Add("UserID", System.Type.GetType("System.String"));
dtSource.Columns.Add("UserName", System.Type.GetType("System.String"));
dtSource.Columns.Add("Stage", System.Type.GetType("System.String"));
DataRow dr = dtSource.NewRow();
for (int i = 0; i < 2; i++)
{
    dr[0] = "0000";
    dr[1] = "Lucky";
    dr[2] = "AA";
    dtSource.Rows.Add(dr.ItemArray);
}
dr[0] = "1111";
dr[1] = "Poppy";
dr[2] = "AB";
dtSource.Rows.Add(dr.ItemArray);
dr[0] = "2222";
dr[1] = "Zack";
dr[2] = "AC";
dtSource.Rows.Add(dr.ItemArray);                

技术图片

2. 使用DataView去重

DataView dv = dtSource.DefaultView;
dv.Sort = "UserID ASC";
DataTable distinctDT = dv.ToTable("NewData", true, new string[] { "UserID", "UserName", "Stage" });

技术图片

3. 使用Lambda表达式去重

DataTable distinctDT = dtSource.Clone();
var distinctRows = dtSource.AsEnumerable().Cast<DataRow>()
					.Select(row => new
					{
						UserID = row.Field<string>("UserID"),
						UserName = row.Field<string>("UserName"),
						Stage = row.Field<string>("Stage"),
					}).Distinct();
if (distinctRows.ToList().Count > 0)
{
	distinctRows.ToList().ForEach(q =>
	{
		DataRow dr1 = distinctDT.NewRow();
		dr1["UserID"] = q.UserID;
		dr1["UserName"] = q.UserName;
		dr1["Stage"] = q.Stage;
		distinctDT.Rows.Add(dr1);
	});
}

技术图片

C# Distinct去重DataTable

标签:code   tin   new   opp   stage   表达式   pop   ima   ack   

原文地址:https://www.cnblogs.com/LuckyZLi/p/12558802.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!