使用列表的Linq过滤器

时间:2018-10-30 19:27:51

标签: c# linq

我需要在其中应满足多个记录条件的地方写一个LINQ where子句。

例如,在Animal表中。我有3列

  

编号,姓名,年龄

我需要找到名称为Animals的所有array['Ant', 'Mouse', 'Turtle']

var aniList=   db.Animals.Where(c => 
    c.Name== arrAni[0]  ||
    c.Name== arrAni[1] ||
    c.Name== arrAni[2]   );

但是,以上内容是硬编码的。我需要直接将List插入where子句中,以便将其过滤掉。我怎样才能做到这一点 ?

2 个答案:

答案 0 :(得分:4)

好吧,您可以简单地使用Linq .Contains方法:

var aniList = db.Animals.Where(c => arrAni.Contains(c.Name));

答案 1 :(得分:0)

使用Enumerable.Contains

string[] animalNames = new string[] {"ant", "mouse", "turtle"}
var desiredAnimals = animalList
    .Where(animal => animalNames.Contains(animal.Name));

换句话说:从Animals的{​​{1}}集合中,仅保留animalListAnimals集合中的Name