在EF中查询具有组合键的实体列表

时间:2014-12-17 19:31:23

标签: c# entity-framework

我有一张带有复合键的表格,例如:

modelBuilder.Entity<MyEntity>().HasKey(e=> new { e.Part1, e.Part2 });

我还有一个内存中的键列表,我想加载实体,例如:

var keys = new [] { new { Part1= 1, Part2 = 2}, new { Part1= 3, Part2 = 4} }

如何执行单个查询以加载keys数组中的实体?

我尝试过像ctx.MyEntities.Where(e => keys.Any(k => k.Part1 == e.Part1 && k.Part2 == e.Part2))

这样的显而易见的事情

This answer表明这是不可能的,但肯定不是这样。

1 个答案:

答案 0 :(得分:-1)

我建议做以下事情:

var part1Keys = keys.Select(k => k.Part1);
var part2Keys = keys.Select(k => k.Part2);

var entities = ctx.MyEntities.Where(e => part1Keys.Contains(e.Part1) && part2Keys.Contains(e.Part2));