Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Сгруппировать в зависиомости от null LINQ  [new]
rigor mortis
Member

Откуда:
Сообщений: 76
Привет
что-то затруднился. Есть запрос:

from c in context.Set<Entity>()
join ent1 in context.Set<Entity1>() on c.Id equals ent1.Id into le1 
from e1 in le1.DefaultIfEmpty()
join ent2 in context.Set<Entity2>() on c.Id equals ent2.Id into le2 
from e2 in le2.DefaultIfEmpty()
group e1 by new { e1.StartDate } into gr;


Сдесь сгруппировано по полю из одной таблицы e1, а мне нужно сгруппировать по обеим e1 и e2 в зависимости от null, то есть если e1 = null то группировать по e2, если e2 = null то группировать по e1.
Подскажите плз как сделать?
22 апр 19, 14:21    [21868884]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать в зависиомости от null LINQ  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1351
rigor mortis,

from c in context.Set<Entity>()
join ent1 in context.Set<Entity1>() on c.Id equals ent1.Id into le1 
from e1 in le1.DefaultIfEmpty()
join ent2 in context.Set<Entity2>() on c.Id equals ent2.Id into le2 
from e2 in le2.DefaultIfEmpty()
let groupField = e1 == null ? e2.StartDate : e1.StartDate 
group e1 by new { groupField  } into gr;


В студии не проверял.
25 апр 19, 14:51    [21871729]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать в зависиомости от null LINQ  [new]
rigor mortis
Member

Откуда:
Сообщений: 76
Агнец за бортом
rigor mortis,

from c in context.Set<Entity>()
join ent1 in context.Set<Entity1>() on c.Id equals ent1.Id into le1 
from e1 in le1.DefaultIfEmpty()
join ent2 in context.Set<Entity2>() on c.Id equals ent2.Id into le2 
from e2 in le2.DefaultIfEmpty()
let groupField = e1 == null ? e2.StartDate : e1.StartDate 
group e1 by new { groupField  } into gr;


В студии не проверял.

Спасибо, но это не сработает так как мы группируем group e1 по e2.StartDate (в случае e1 == null). Там будет группа с null в качестве значений элементов списка.
27 апр 19, 01:33    [21873176]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать в зависиомости от null LINQ  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1351
rigor mortis,

from c in context.Set<Entity>()
join ent1 in context.Set<Entity1>() on c.Id equals ent1.Id into le1 
from e1 in le1.DefaultIfEmpty()
join ent2 in context.Set<Entity2>() on c.Id equals ent2.Id into le2 
from e2 in le2.DefaultIfEmpty()
let groupField = e1 == null ? e2.StartDate : e1.StartDate 
let item = e1 == null ? e2 : e1
group item  by groupField into gr;


В студии не проверял.
27 апр 19, 23:08    [21873549]     Ответить | Цитировать Сообщить модератору
 Re: Сгруппировать в зависиомости от null LINQ  [new]
rigor mortis
Member

Откуда:
Сообщений: 76
Агнец за бортом
rigor mortis,

from c in context.Set<Entity>()
join ent1 in context.Set<Entity1>() on c.Id equals ent1.Id into le1 
from e1 in le1.DefaultIfEmpty()
join ent2 in context.Set<Entity2>() on c.Id equals ent2.Id into le2 
from e2 in le2.DefaultIfEmpty()
let groupField = e1 == null ? e2.StartDate : e1.StartDate 
let item = e1 == null ? e2 : e1
group item  by groupField into gr;


В студии не проверял.

Не, пишет, не удаётся определить тип так как нет явного преобразования между Entity1 и Entity2. Видимо, придётся делать отдельные запросы и потом делать concat.
29 апр 19, 01:51    [21873878]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить