2014-09-26 2 views
1

У меня есть две таблицы table1 и table2. Каждая таблица содержит столбец с itemPrice. Мне нужно добавить два столбца вместе.необходимо преобразовать SQL CROSS JOIN в LINQ

SQL-запрос ниже возвращает правильный SUM.

SELECT SUM(item1+ item2) FROM 
(select SUM(t1.itemPrice) item1 from table1 t1 WHERE t1.userid=='jonh') tableA 
CROSS JOIN 
(select SUM(t2.itemPrice) item2 from table2 t2 WHERE t1.userid=='jonh') tableB 

Я не был ленивым, но выше запрос имеет так много функций SUM, что я не знаю, с чего начать писать LINQ запросы.

Может ли кто-нибудь помочь?

ответ

0

Сеси,

Надеюсь, это даст вам то, что вы хотите ...

from f in ( 
    from x in ( from t1 in Table1 
        where t1.Userid.Equals("John") 
        select new { Userid = t1.Userid } 
       ).Distinct() 
    select new { item1 = ( from z in Table1 
           where z.Userid.Equals("John") 
           select z.ItemPrice).Sum() ??0 , 
        item2 = ( from z in Table2 
           where z.Userid.Equals("John") 
           select z.ItemPrice).Sum() ??0 } 
      ) select new { total = f.item1 + f.item2 } 

В случае, где нет никаких записей для «сортир» в одной таблице, она вернет значение 0 и подытоживаем другие таблицы.

надеюсь, что это поможет.

+0

Удивительно, что он отлично работает! У меня никогда бы не было этого, чтобы работать самостоятельно. Спасибо. Быстрый вопрос. Должен быть более короткий способ написать это, нет? Его кажется длинным. – ceci

+0

@ceci, я не специалист по LINQ, может быть, кто-то с большим опытом может придумать более сжатое решение. –

+0

Эд, вы добавили это «?? 0» в запрос, и я бы предположил, что он возвращает ноль, если его пустым. Я пробовал искать, но ничего не нашел. Можете ли вы объяснить, для чего он используется? Благодарю. – ceci

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