根据二维数组过滤LINQ to实体查询

时间:2011-05-12 03:59:22

标签: c# linq entity-framework linq-to-entities

这是Linq2实体挑战......

我有一个实体(ID,CategoryID,Value)和一个带有CategoryID / Value对的二维int数组。我需要让每对实体过滤掉所有实体,例如:

from e in Entity
where (e.CategoryID and e.Value) in array
select e;

所以基本上是一个“两个链接的字段”过滤器。

一个肮脏的解决方案是连接和比较,如:

concatarray = some function to concat CategoryID + "/" + Value; 

from e in Entity
where e.CategoryID + "/" + e.Value in concatarray
select e;

但由于性能问题,我不想使用它。

有什么想法吗?

非常感谢!

1 个答案:

答案 0 :(得分:3)

首先,我会将您的数组转换为具有特定属性的对象列表。使用2d数组不是一个好主意。

然后查询,可能无法在EF中转换为SQL。

from e in Entity
where array.Where(a=>a.CategoryID == e.CategoryID && a.Value == e.Value).Any()
select e