使用带有Entity Framework Contains语句的元组

时间:2013-07-11 13:46:24

标签: c# entity-framework

我有一个实体,其引用是标识符和环境的组合。我想实现一个函数,允许用户传递(ID,Environment)元组列表并返回所需的实体。是否可以在这种情况下使用Contains()?怎么样?通过简单的引用,它就像

一样简单
model.MyEntities.Where(e => myIds.Contains(e.Id))

编辑:为了澄清,我不是在寻找如何使用Contains()方法来检索ID列表;我上面写的这句话做到了这一点。我正在寻找的是能够检索与(ID,Environment)元组匹配的实体列表,而不仅仅是ID。

1 个答案:

答案 0 :(得分:1)

最新版本的Entity Framework允许您对基本类型数组执行Contains(我认为它现在也适用于IEnumerable,我还没有尝试过。)

如果您只匹配Id(例如,如果其中一个元组的ID是MyEntity.Id,那么您的匹配就会很好,这将有效(我在这里使用Tuple因为您的情况似乎是一个实际的对象; Tuple只有ItemN属性):

var containedIds = yourListOfTuples.Select(t => t.Id).ToArray();
model.MyEntities.Where(e => containedIds.Contains(e.Id));

这将有效地转换为SQL中的WHERE ... IN ([the Ids in containedIds])语句。