У меня есть два запроса, чтобы отфильтровать список данных. Основная часть запускается каждый раз, и в обычных ситуациях общее количество результатов должно быть сокращено не более чем до дюжины или двух. Когда я редактирую объект Foo
вместо создания нового, я также хочу удалить копию, сохраненную в БД, из набора данных, над которым я работаю.
В настоящее время я использую оператор if и второй запрос для его удаления. Есть ли способ объединить условие и второй запрос в первый?
IEnumerable<Foo> myFoos = bar.GetFoos()
.Where(f => f.Value1 == value1 && f.Value2 == value2);
if (editFoo != null)
myFoos = myFoos.Where(f => f.ID != editFoo.ID);
Когда я пытаюсь выполнить запросы, предложенные sehe или Dan Seaver, и набираю .ToList()
на myFoos
, я получаю исключение:
Unable to create a constant value of type 'Foo'. Only primitive types ('such as Int32, String, and Guid') are supported in this context
Я создал фиктивные объекты, которые содержали каждое свойство в моем необработанном запросе, и он выполнялся без ошибок, поэтому я склоняюсь к подозрению, что проблема заключается в том, что Entity Framework не понимает нулевые проверки в предложенных запросах и является раздражать их. Структура сущности была виновата; без него любое решение будет работать как написано.