У меня есть Таблица1 и Таблица2 в виде IEnumerable<DataRow>
.В обеих таблицах есть столбцы Column1
и Column2
.
. Я хотел бы выполнить левое внешнее соединение на Column1
и хотел бы получить количество строк, присутствующих в Table2
, и загрузитьзаписей в DataTable.
Я пробовал следующий запрос
var query = from p in Table1
join q in Table2 on p.Field<string>("Column1") equals q.Field<string>("Column1") into pq
from xyz in pq.DefaultIfEmpty()
group xyz by new { Col1 = p.Field<string>("Column1"), Col2 = p.Field<string>("Column2") } into g
select dtFinalData.LoadDataRow(new object[]
{
g.Key.Col1,
g.Key.Col2,
g.Count
}, false);
Поскольку «g» представляет сгруппированные данные, g.count возвращает 1 для строк, в которых нет записей в таблице 2Я хотел бы вернуть '0' для этих строк.
Ввод:
Таблица 1
Col1Val1 Col2Val1
Col1Val2 Col2Val2
Таблица 2
Col1Val1 Col2Val1
Col1Val1 Col2Val1
Токовый выход:
Col1Val1 Col2Val1 2
Col2Val2 Col2Val2 1
Ожидаемые результаты:
Col1Val1 Col2Val1 2
Col2Val2 Col2Val2 0
Я смотрелв LINQ - левое соединение, группировка по и счет , но я не могу применить то же самое в своем запросе ...
Можете ли вы помочь мне исправить этот запрос?