我正在学习EF和LINQ,同时为一个项目的API工作虽然在大多数情况下EF和LINQ使我的编码更容易,但这个特殊的情况是不同的。
我有一个整数列表,我必须查询我的DB,包括里面的所有int列表[10,2,23]
var queryable = (from p in db.plants
where p.plant_id == 10
|| p.plant_id == 2
|| p.plant_id == 23
select p)
.ToList();
,但列表是在运行时创建的,其中的项数是可变的那么创建查询的方法是什么呢?
您可以在所需id的IEnumerable
上使用Contains()
函数。实体框架将此转换为SQL IN
子句,因此它是一个很好的高效查询。
所以这将导致你的例子是:
var plantIds = new List<int> {10, 2, 23};
var queryable = (from p in db.plants
where plantIds.Contains(p.plant_id)
select p)
.ToList();