C# DataTable搜索重命名副本

C# DataTable搜索重命名副本,c#,C#,很抱歉提出这个问题,但我没有找到解决这个简单问题的方法( 在这个dt中,我想在第一列中找到一个重复项,将其重命名为“_1”、“_2”、 最终结果必须如下所示: **customer_id** **shippingname** **shippingaddress** 100001 John Wayne John Wayne Street 100001_1 Billy Jean Billy Jean Str

很抱歉提出这个问题,但我没有找到解决这个简单问题的方法(

在这个dt中,我想在第一列中找到一个重复项,将其重命名为“_1”、“_2”、

最终结果必须如下所示:

**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
    }
}