У меня есть две таблицы с именем таблицы 1 и таблицы 2: Теперь я хочу, чтобы заполнить столбец, который находится в таблице 2 из колонки, которая находится в таблице 1.Присоединяйтесь к DataTable с помощью Linq
table 1
Date | Value
-------------
5 | 678
10 | 135
15 | 420
table 2
Date | Value | Value2
------------------------
1 | 100 |
2 | 200 |
3 | 300 |
4 | 400 |
5 | 500 | 678
6 | 600 |
7 | 700 |
8 | 800 |
9 | 900 |
10 | 1000 | 135
11 | 1100 |
12 | 1200 |
13 | 1300 |
14 | 1400 |
15 | 1500 | 420
16 | 1600 |
17 | 1700 |
Я использую ниже код для заполнения данных с использованием цикла foreach. Но для оценки требуется больше времени. Я хочу использовать Linq. Может кто-нибудь мне помочь ?
foreach (DataRow row in table.Rows)
{
string date= Convert.ToString(row["date"]);
if (!string.IsNullOrEmpty(date))
{
foreach (DataRow sheetRow in table1.Rows)
{
if (sheetRow["Date"] != DBNull.Value)
{
// Assuming that given columns in both datatables are of same type
if (Convert.ToDateTime(date) == Convert.ToDateTime(sheetRow["Date"]))
{
row["Value"] = sheetRow["Value"];
break;
}
}
}
}
return table2;
Возможно, вам поможет http://stackoverflow.com/a/11593/316799 –
Я ничего не знаю о linq, но то, что вы хотите сделать, - это один оператор SQL, поэтому я был бы очень удивлен, если бы вам нужны какие-либо петли для linq , Все, что вам нужно сделать, это выбрать значения из таблицы 1 и вставить их в таблицу 2, где совпадают даты. –
«Требуется больше времени для оценки» - больше времени, чем что? Linq не делает looping _faster_, что делает его более простым для кода_. Он по-прежнему использует петли за кадром. –