Contains
можно использовать в LINQ to SQL ... это обычный способ выполнения запросов IN. Я смутно помню, что есть некоторые ограничения, но это определенно может сработать. Ограничения могут касаться задействованных типов ... historyList
a List<T>
? Вероятно, он не поддерживается для произвольных IEnumerable<T>
, например.
Теперь я не знаю, работает ли инвертирование результата, чтобы получить запрос «НЕ В», но по крайней мере это стоит попробовать. Вы пробовали точный запрос из вашего вопроса?
Одно замечание: я думаю, что удобочитаемость вашего запроса улучшится, если вы попытаетесь сохранить одно предложение на строку:
var nextInvention = (from inv in iContext.Inventions
where !historyList.Contains(inv.Id)
orderby inv.DateSubmitted ascending
select inv)
.First();
Также обратите внимание, что в этом случае синтаксис метода, возможно, проще:
var nextInvention = iContext.Inventions
.Where(inv => !historyList.Contains(inv.Id))
.OrderBy(inv => inv.DateSubmitted)
.First();