Задать вопрос
@Taifunov

Почему не поддерживается DefaultIfEmpty?

DataContext db = new DataContext(GetConnection());
                Table<Car> carTable = db.GetTable<Car>();
                var customers = db.GetTable<Customer>();
                Table<Customer> customerTable = db.GetTable<Customer>();


                var allCustomerByNumber = from customer in customerTable
                                          join car in carTable
                                             on customer.Number equals car.Number into numbers
                                             from n in numbers.DefaultIfEmpty(new Car())
                                             select new
                                             {
                                                 id = customer.Id,
                                                 Name = customer.Name,
                                                 n.Mark
                                             };
                foreach (var item in allCustomerByNumber)
                {
                    Console.WriteLine(item);
                }


Вот есть код, хочу сделать Left join через Linq2db (использую Sqlite), я вроде бы правильно ж делаю left join? И какие альтернативы в таком случае для left join?

Выдёт исключения вида:
System.InvalidOperationException: "QueryOperatorOverloadNotSupported: DefaultIfEmpty."
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
SergeyEgorov
@SergeyEgorov
Веб разработчик
Потому что сигнатура DefaultIfEmpty вот такая:
DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource)


А это означает что если numbers содержит целые числа, то передавать туда new Car() нельзя.
Ответ написан
@Taifunov Автор вопроса
Привёл таблицу к Linq2Enity и всё заработало ;)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы