DataTable поиск переименовать дубликат - PullRequest
0 голосов
/ 03 апреля 2020

извините за этот нубский вопрос, но я нашел решение для этой простой проблемы. : (

В этом т. Д. Я хочу найти в первом столбце дубликаты, переименовать его в "_1", "_2", ....

**customer_id**   **shippingname**   **shippingaddress**

100001              John Wayne          John Wayne Street
100001              Billy Jean          Billy Jean Street
100002              John Conner         John Conner Street
100003              John Smith          John Smith Street
100001              Carrol Tree         Carrol Tree

конечный результат должен выглядеть следующим образом это:

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

надеюсь, что смогу это объяснить :). Большое спасибо:).

1 Ответ

1 голос
/ 04 апреля 2020

вот один из способов, как это сделать ...

//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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...