C# DataTable搜索重命名副本
很抱歉提出这个问题,但我没有找到解决这个简单问题的方法( 在这个dt中,我想在第一列中找到一个重复项,将其重命名为“_1”、“_2”、 最终结果必须如下所示:C# DataTable搜索重命名副本,c#,C#,很抱歉提出这个问题,但我没有找到解决这个简单问题的方法( 在这个dt中,我想在第一列中找到一个重复项,将其重命名为“_1”、“_2”、 最终结果必须如下所示: **customer_id** **shippingname** **shippingaddress** 100001 John Wayne John Wayne Street 100001_1 Billy Jean Billy Jean Str
**customer_id** **shippingname** **shippingaddress**
100001 John Wayne John Wayne Street
100001_1 Billy Jean Billy Jean Street
100002 John Conner John Conner Street
100003 John Smith John Smith Street
100001_2 Carrol Tree Carrol Tree
希望我能解释一下:)。
非常感谢:)。这里有一种方法
//setting up your table...
DataTable dt = new DataTable();
dt.Columns.Add("customer_id", typeof(string));
dt.Columns.Add("shippingname", typeof(string));
dt.Columns.Add("shippingaddress", typeof(string));
dt.Rows.Add("100001", "John Wayne", "John Wayne Street");
dt.Rows.Add("100001", "Billy Jean", "Billy Jean Street");
dt.Rows.Add("100002", "John Conner", "John Conner Street");
dt.Rows.Add("100003", "John Smith", "John Smith Street");
dt.Rows.Add("100001", "Carrol Tree", "Carrol Tree");
//table initialized
//first we group our rows by customer_id ...
var grps = dt.Rows.Cast<DataRow>().GroupBy(x => x.Field<string>("customer_id"));
//then we handle each group...
foreach (var grp in grps)
{
int i = 1;//our suffix counter
foreach (var row in grp.Skip(1)) // we go through all elements but the first...
{
row.SetField("customer_id", $"{grp.Key}_{i++}");//we set the new id
}
}
//正在设置表。。。
DataTable dt=新的DataTable();
添加(“客户id”,类型(字符串));
添加(“shippingname”,类型(字符串));
添加(“发货地址”,类型(字符串));
添加“100001”、“约翰·韦恩”、“约翰·韦恩街”);
dt.行添加(“100001”、“比利简”、“比利简街”);
添加“100002”、“约翰·康纳”、“约翰·康纳街”);
添加(“100003”、“约翰史密斯”、“约翰史密斯街”);
添加(“100001”、“卡罗尔树”、“卡罗尔树”);
//表已初始化
//首先,我们按客户id对行进行分组。。。
var grps=dt.Rows.Cast().GroupBy(x=>x.Field(“客户id”);
//然后我们处理每一组。。。
foreach(grp中的var grp)
{
int i=1;//我们的后缀计数器
foreach(grp.Skip(1)中的varrow))//我们将遍历除第一个元素之外的所有元素。。。
{
row.SetField(“customer_id”,$“{grp.Key}{i++}”);//我们设置新的id
}
}
您可以使用查找重复行的索引,一旦完成,您可以轻松更改其索引值。:)
//setting up your table...
DataTable dt = new DataTable();
dt.Columns.Add("customer_id", typeof(string));
dt.Columns.Add("shippingname", typeof(string));
dt.Columns.Add("shippingaddress", typeof(string));
dt.Rows.Add("100001", "John Wayne", "John Wayne Street");
dt.Rows.Add("100001", "Billy Jean", "Billy Jean Street");
dt.Rows.Add("100002", "John Conner", "John Conner Street");
dt.Rows.Add("100003", "John Smith", "John Smith Street");
dt.Rows.Add("100001", "Carrol Tree", "Carrol Tree");
//table initialized
//first we group our rows by customer_id ...
var grps = dt.Rows.Cast<DataRow>().GroupBy(x => x.Field<string>("customer_id"));
//then we handle each group...
foreach (var grp in grps)
{
int i = 1;//our suffix counter
foreach (var row in grp.Skip(1)) // we go through all elements but the first...
{
row.SetField("customer_id", $"{grp.Key}_{i++}");//we set the new id
}
}