LINQ Строковый массив не IN

используя LINQ, как мне получить этот запрос для возврата всех состояний, кроме тех, что содержатся в массиве строк?

string[] states = { "FL", "CA", "IN", "AL", "MI" };
var headers = (from h in db.Headers
 where h.State != states.Any()
 select new
 {
 description = h.Description,
 state = h.State
 });
2 ответа

Вы можете попробовать следующее:

var headers = (from h in db.Headers
 where !states.Contains(h.State)
 select new
 {
 description = h.Description,
 state = h.State
 });


Вероятно, вы должны использовать Contains потому что он будет переведен как NOT IN в SQL но так вы можете сделать это с Any, его следует перевести как NOT EXISTS:

var headers = (from h in db.Headers
 where !states.Any(x => x == h.State)
 select new
 {
 description = h.Description,
 state = h.State
 });

licensed under cc by-sa 3.0 with attribution.