|
Подскажите с LINQ | ☑ | ||
---|---|---|---|---|
0
Иде я?
модератор
09.11.12
✎
15:06
|
Есть список1 , есть второй список2, в котором есть ссылка на список 1 и сумма.
Надо вывести всё из списка1 ,и через Left outer JOIN присоединить суммы из второго списка с группировкой по ID select Table_1.Name,Table_1.Summa1,Td2.Summa2 from Table_1 left outer join (select Table_2.Id1 , Sum(Table_2.Summa2)as summa2 from Table_2 group by Table_2.ID1) as td2 ON Table_1.ID=td2.id1 Вот на SQL КАк все это перевести на LINQ ? Сижу втыкаю -ну не могу воткнуть... |
|||
1
Иде я?
модератор
09.11.12
✎
15:10
|
http://www.coding4.net/post/linq-left-join-example-in-c.aspx
Давайте рассмотрим Left Outer Join между коллекциями Книг и Заказов: var orderForBooks = from bk in bookList join ordr in bookOrders on bk.BookID equals ordr.BookID into a from b in a.DefaultIfEmpty(new Order()) select new { bk.BookID, Name = bk.BookNm, b.PaymentMode }; foreach (var item in orderForBooks) Console.WriteLine(item); Console.ReadLine(); |
|||
2
Иде я?
модератор
09.11.12
✎
15:25
|
var q =
from c in Table_1s join p in Table_2s on c.ID equals p.Id1 into ps from p in ps.DefaultIfEmpty() select new { Id = c.ID,Summa = c.Summa1, Name = p.Summa2 == null ? 0 : p.Summa2 }; q.Dump(); проверено в LINQPAD теперь осталось сделать group by и SUM |
|||
3
Иде я?
модератор
09.11.12
✎
15:36
|
попробовал так:
var q = from t2 in Table_2s group t2 by t2.Id1 into t2g join t1 in Table_1s on t2g.id1 equals t1.ID into ps from p in ps.DefaultIfEmpty() select new { Id = t1.ID,Summa = t1.Summa1, Name = t1.Name, Summa2 == null ? 0 : t2g.Summa2 }; q.Dump(); Выходит ошибка: Недопустимый декларатор анонимного члена типа. Анонимные члены типа должны объявляться с помощью назначения члена, простого имени или доступа члена. |
|||
4
Иде я?
модератор
09.11.12
✎
15:41
|
аУ, гуры - вы где ?
|
|||
5
Serginio1
09.11.12
✎
15:45
|
http://www.rsdn.ru/ сюда обратись. Давно не брал я в руки Linq
|
|||
6
Иде я?
модератор
09.11.12
✎
16:08
|
var objList = from ListData in
(from a in Table_1s join b in Table_2s on a.ID equals b.Id1 into t2 from t2Data in t2.DefaultIfEmpty() select new { Name = a.Name, Summa2 = t2Data.Summa2, Summa1 = a.Summa1 } ) group ListData by new { ListData.Name, ListData.Summa1 } into GroupData select new { Name = GroupData.Key.Name, Summa1 = GroupData.Key.Summa1, Summa2 = GroupData.Sum(OL => OL.Summa2) }; Разобрался (в смысле нагуглил) пашет |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |