使用带有Entity Framework Contains语句的元组
我有一个实体,其引用是标识符和环境的组合。 我想实现一个函数,允许用户传递(ID,Environment)元组列表并返回所需的实体。 是否可以在这种情况下使用Contains()? 怎么样? 通过简单的参考,就像它一样简单
model.MyEntities.Where(e => myIds.Contains(e.Id))
编辑 :澄清一下,我不是在寻找如何使用Contains()方法来检索ID列表; 我上面写的这句话做到了这一点。 我正在寻找的是能够检索与(ID,Environment)元组匹配的实体列表,而不仅仅是ID。
最新版本的Entity Framework允许你对一个原始类型的数组进行Contains
(我认为它现在也适用于IEnumerable
,我还没试过)。
如果你只匹配你的Id
(也就是说,如果其中一个Tuple的ID是MyEntity.Id
你的匹配是好的,这将有效(我在这里使用Tuple
,因为你的情况似乎是一个实际的对象; Tuple
只有ItemN
属性):
var containedIds = yourListOfTuples.Select(t => t.Id).ToArray(); model.MyEntities.Where(e => containedIds.Contains(e.Id));
这将有效地转换为WHERE ... IN ([the Ids in containedIds])
语句。