LINQ - это язык запросов, предназначенный для операций чтения. Вы не можете выполнить операцию вставки в запросе LINQ. Что вы можете сделать, это создать три LINQ-запроса и выполнять их итерацию отдельно:
var rows1 = from row in rows where row["ItemType"] == 1 select row;
var rows2 = from row in rows where row["ItemType"] == 2 select row;
var rows3 = from row in rows where row["ItemType"] == 3 select row;
foreach (var row in rows1) { /* Insert item into DataTable1 */ }
foreach (var row in rows2) { /* Insert item into DataTable2 */ }
foreach (var row in rows3) { /* Insert item into DataTable3 */ }
<ч />
Обновление:
Или, когда вы можете сделать это в одном операторе LINQ, вы можете сделать это:
var rows =
from row in rows
select new { Row = row, Item = row["ItemType"] };
foreach (var row in rows)
{
switch (row.Item)
{
case 1:
// Insert item into DataTable1
break;
case 2:
// Insert item into DataTable2
break;
case 3:
// Insert item into DataTable3
break;
}
}
Обновление: еще один вариант:
var rows =
from row in rows
select new
{
Row = row,
Table = row["ItemType"] == 1 ? table1 :
(row["ItemType"] == 2 ? table2 : table3)
};
foreach (var row in rows)
{
var table = row.Table;
var row = row.Row;
table.Rows.Add(row);
}