1

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

model.MyEntities.Where(e => myIds.Contains(e.Id))

编辑:澄清一下,我不是在寻找如何使用 Contains() 方法来检索 ID 列表;我上面写的那行就是这样做的。我正在寻找的是能够检索与(ID,环境)元组匹配的实体列表,而不仅仅是ID。

4

1 回答 1

1

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

如果您仅在您的上匹配Id(即,如果元组的 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])SQL 语句。

于 2013-07-11T13:52:19.760 回答