如何使用带有OR子句的Where过滤器的ObjectQuery

Ano*_*ous 5 c# sql filter where objectquery

有人可以帮我回答如何用ObjectQuery bilder重写原始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);
Run Code Online (Sandbox Code Playgroud)

我会使用Where()方法,但它生成where子句用AND分隔,但我想使用OR代替.是否可以使用QueryBilder?我的意思是如何使用它来生成"OR分离"过滤器:

Where("it.LocaleName IN (@localeName)", new ObjectParameter("localeName", String.Join(",", localeName)))
Run Code Online (Sandbox Code Playgroud)

谢谢,阿尔乔姆

Ano*_*ous 8

它再次发生,我自己回答我的问题.谢谢你.

这是答案:

ObjectQuery作为EntityCommand不支持"IN"CLAUSE YET ...这意味着没有机会使用WHERE IN过滤器将查询发送到DB,直到您使用已从DB中选择的DataSet.因此,只有LINQ方法可以执行此操作,并且只能使用选定的List <>

虽然,有一个替代方案不是那么明确但有效的决定 - 您可以在查询中使用多个OR条件,它们对我来说很好:

ObjectQuery<DbDataRecord> query = query.Where("it.RouteID=1 OR it.RouteID=2");
Run Code Online (Sandbox Code Playgroud)

希望这会帮助别人......享受:)


小智 5

您可以在ObjectQuery中使用IN子句.你只需要使用{而不是(.

例如"it.ID IN {4,5,6}"而不是"it.ID IN(4,5,6)"

这个答案的所有功劳都来自 使用Linq to Entities的'Contains()'解决方法?