我有一个实体,其引用是标识符和环境的组合。我想实现一个函数,允许用户传递(ID,Environment)元组列表并返回所需的实体。是否可以在这种情况下使用Contains()?怎么样?通过简单的引用,它就像
一样简单model.MyEntities.Where(e => myIds.Contains(e.Id))
编辑:为了澄清,我不是在寻找如何使用Contains()方法来检索ID列表;我上面写的这句话做到了这一点。我正在寻找的是能够检索与(ID,Environment)元组匹配的实体列表,而不仅仅是ID。
答案 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])
语句。