这是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;
但由于性能问题,我不想使用它。
有什么想法吗?
非常感谢!
答案 0 :(得分:3)
首先,我会将您的数组转换为具有特定属性的对象列表。使用2d数组不是一个好主意。
然后查询,可能无法在EF中转换为SQL。
from e in Entity
where array.Where(a=>a.CategoryID == e.CategoryID && a.Value == e.Value).Any()
select e