2014-01-28 4 views
1

Я заполняю список в Entity Framework;Обработка пустых коллекций в Entity Framework

List<StockProperties> props = db.StockProperties 
            .Where(prop => prop.Stok_ID == stok.ID) 
            .ToList(); 

Проблема здесь, если мой запрос является недействительным, он возвращает

Non-статический метод требует цели.

ошибка, которая очевидна, поскольку EF делает это с пустыми последовательностями. Мой вопрос - это самый разумный способ обработки этих нулевых запросов? Я хочу, чтобы мой список был пустым, если мой запрос возвращает нулевые последовательности.

+1

«Если мой запрос равен нулю»? Я не вижу никаких нулей здесь, кроме, быть может, 'stok'. –

+0

DefaultIfEmpty - удобный метод, который вы можете использовать здесь. Вы можете указать валу по умолчанию для каждого запаса. Кроме того, почему бы просто не проверить, является ли List нулевым или List.Length> 0 – Botonomous

+0

Im, не получая это, является ли исключение или является «реквизитом просто просто« null »? потому что в коде нет ничего плохого, и если запрос EF возвращает 0 строк, вы должны получить пустой список. Если это исключение, вы могли бы показать нам стек? – furier

ответ

2

это:

List<StockProperties> props = db.StockProperties 
           .Where(prop => false) 

возвращает вас System.Linq.Enumerable.WhereListIterator<StockProperties> с 0 reccords он никогда не будет null.

Ваша проблема может быть с prop => prop.Stok_ID == stok.ID

ли СТОК объявлен?

Проверить here

-1

Вы можете поставить Отступайте вариант для null

var props = 
    db.StockProperties.Where(prop => prop.Stok_ID == stok.ID) 
    ?? Enumerable.Empty<StockProperties>(); 

или

var props = 
    db.StockProperties.Where(prop => prop.Stok_ID == stok.ID).ToList() 
    ?? new List<StockProperties>(); 
+0

'Queryable.Where' (или' Enumerable.Where') не будет * когда-либо возвращать значение «null». – Servy

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