我正在使用 EF 4,我正在尝试找到一种好方法来选择主键使用多列并使用对象列表进行搜索的记录。到目前为止,这是我尝试过但没有成功的方法:
我有一个 Foo 类型的对象列表。 Foo 有两个属性,A 和 B。Order 表的主键是列 A 和 B。
var orders = (from o in context.Orders
where FooList.Contains(new Foo { A = o.A, B = o.B }
select o);
这会引发一个错误,提示我只能使用标量值。据我所知,我需要 FooList 成为标量列表。我也尝试加入我的对象列表,但这也没有用:
var orders = (from o in context.Orders
join foo in FooList
on new { foo.A, foo.B } equals new { o.A, o.B }
select o)
显然,我可以遍历 FooList 中的所有值,获取我需要的顺序并更新它,但在我目前的情况下这非常慢(FooList 中大约有 6000 个值)。
有什么想法吗?
最佳答案
您仍然可以使用(变体)the BuildContainsExpression workaround这在 EF 4 之前是必需的。
生成的 SQL 将是相同的。
关于c# - 使用 Entity Framework 4 选择具有非标量键列表的多行的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7285079/