我有一张带有复合键的表格,例如:
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表明这是不可能的,但肯定不是这样。
答案 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));