2013-07-08 3 views
1

У меня есть 2 datatables, Tab1 и Tab2. Tab1 заполнен данными, Tab2 пуст.C# копирование отдельных данных из 1 данных в другой

Tab1 выглядит так:
Col1 | Col2 | Col3 | Ключ | Страна | Col ....
abc | xyz | 103 | AK1 | POL | .....
pol | человек | 1212 | AK2 | POL | ....
moro | kom | 11 | AK1 | POL | ....
bca | oni | 10a | AK1 | GER | ....
bca | oni | 10a | AK3 | GER | ....
al | 1n | zxc | AK2 | POL | ....

Мне нужно выбрать отдельные данные по ключу и стране (комбинация клавиш + страна должна быть уникальной) и поместить ее в Tab2.

Как это сделать в C#? У меня много строк, поэтому мне нужен тихий быстрый способ сделать это.

Для этого примера результат должен быть:
Col1 | Col2 | Col3 | Ключ | Страна | Col ....
abc | xyz | 103 | AK1 | POL | .....
pol | человек | 1212 | AK2 | POL | ....
bca | oni | 10a | AK1 | GER | ....
bca | oni | 10a | AK3 | GER | ....

ответ

2

Вы можете группировать элементы в указанных столбцах, а затем захватывать первую (или последнюю или любую) строку из каждой группы.

secondTable = firstTable.AsEnumerable() 
    .GroupBy(row => new 
    { 
     Key = row.Field<string>("Key"), 
     Country = row.Field<string>("Country"), 
    }) 
    .Select(group => group.First()) 
    .CopyToDataTable(); 
+0

firstTable.AsEnumerable() .GroupBy (строка => новый { Ключ = row.Field ("Ключ"), Страна = row.Field ("Страна"), }) .Выберите (group => group.First()) .CopyToDataTable (secondTable, LoadOption.OverwriteChanges); Эта версия работала для меня. – user1736332

+0

теперь это cooool, это лямбда ?? – Ali

Смежные вопросы