使用带有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])语句。