Linq, где пункт в выберите новый - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть 2 таблицы, назовем их t1 и t2.t1 имеет идентификатор, строку и логическое значение.У t2 есть ID, дата и t1.ID.Я хочу поместить их в Список моего класса.

public class MyClass {
    public string Name {get; set;}
    public DateTime Date1 {get; set;}
    public Datetime Date2 {get; set;}
}

(в нем 15 дат, чтобы уменьшить его, я просто поместил два)

Мне удалось найтирешение:

List<MyClass> list = (from t2 in con.t2
                      join t1 in con.t1 on t2.T1ID equals t1.ID
                      select t2).GroupBy(d => d.T1ID).Select(x => new MyClass()
{
    Name = x.FirstOrDefault().t1.Name,
    Date1 = x.where(d => d.ID == 1).SingleOrDefault().Date,
    Date2 = x.where(d => d.ID == 2).SingleOrDefault().Date
}).ToList();

Работает, как и ожидалось, но проблема в том, что я получаю предупреждение от Visual Studio:

Выражение LINQ 'GroupBy ([t2].T1ID) 'не удалось перевести и будет оцениваться локально.

Появляется несколько раз.Это сообщение приходит и для SingleOrDefault.Я немного поэкспериментировал, и это просто приходит, если я помещаю где-то в select new.

Итак, как мне изменить свое выражение, чтобы избежать этого?Или мое выражение лица дерьмо, и я мог бы сделать это намного лучше?(Я не могу изменить структуру таблицы)

1 Ответ

0 голосов
/ 27 февраля 2019

Я считаю, что это все еще ограничение EF.Просто обратите внимание на память, используемую вашими запросами, потому что предупреждение предупреждает вас об этом.

С уважением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...