有人可以帮我回答如何用 ObjectQuery 图片重写原始 SQL 过滤器 WHERE (...) OR (...) 吗?
String queryRaw = "SELECT ls.LocaleName, ls.IsActive, ls.LocaleDescription " +
"FROM RoutesEntities.Locales AS ls ";
//" WHERE ls.LocaleName = 'en' OR ls.LocaleName = 'de' "
this._queryData = new ObjectQuery<DbDataRecord>(queryRaw, routesModel);
我会使用 Where() 方法,但它会生成由 AND 分隔的 where 子句,尽管我想改用 OR。 QueryBilder 有可能吗? 我的意思是如何使用它来生成“或分离”过滤器:
Where("it.LocaleName IN (@localeName)", new ObjectParameter("localeName", String.Join(",", localeName)))
谢谢,阿泰姆
最佳答案
它又发生了,我自己回答我的问题。谢谢。
这里是答案:
ObjectQuery 作为 EntityCommand 还不支持“IN”条款 ... 这意味着在您使用已从数据库中选择的数据集之前,没有机会使用 WHERE IN 过滤器将查询发送到数据库。所以只有 LINQ 方法可以做到这一点,并且只能使用选定的列表<>
不过,还有一个不太明确但有效的替代方案 - 您可以在查询中使用多个 OR 条件,它们对我来说效果很好:
ObjectQuery<DbDataRecord> query = query.Where("it.RouteID=1 OR it.RouteID=2");
希望这会帮助某人......享受 :)
关于c# - 如何将 ObjectQuery 与由 OR 子句分隔的 Where 过滤器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791060/