Подсчитайте каждый столбец в linq с левым соединением c #

1

Как я могу выполнить этот запрос с помощью linq С#

SELECT count(tp.column1), count(tf.column2) FROM table1 tp
left join table2 tf on tf.column1= tp.column2

Ожидаемый результат:

column1 column2
39685   12

У меня есть следующий код:

var query = (from t in  table1
            from t2 in  table2.Where (t2=> t2.column2 == t1.column1).DefaultIfEmpty()
            select new {
                x =  t1.column1,
                b = t2.column2
            });

Как я могу подсчитать эти столбцы, как в sql?

Теги:
sql-server
linq

1 ответ

2
Лучший ответ

Вам нужно обмануть поставщика LINQ, считая, что у него есть коллекция коллекций, с которыми приходится иметь дело, так что ваш Count() оценивается как часть SQL, а не сам по себе обратный вызов. Вы можете сделать это, "группируя" значения в одну большую группу.

var query = 
    from t in table1
    let t2 = table2.Where (t2=> t2.column1 == t2.column2)
    group new{t, t2} by 0 into g
    select new{
        column1 = g.Count()
        column2 = g.SelectMany(e => e.t2).Count()
    }
  • 0
    Спасибо! Это то, что мне было нужно!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню