在 Dynamic Linq 中使用 Any() 和 Count()
我正在尝试编写动态 Linq 库查询来根据条件获取记录, 订单数大于 3 且 ShipVia 字段等于 2 的客户。
以下是我尝试过的语法。
object[] objArr = new object[10];
objArr[0] = 1;
IQueryable<Customer> test = db.Customers.Where("Orders.Count(ShipVia=2)", objArr);
但
IQueryable<Customer> test = db.Customers.Where("Orders.Any(ShipVia=2).Count()", objArr);
两者都不起作用。在第二个查询中 Any 返回 true,因此它不适用于 Count。 建议我一种实现此方法的方法。
I am trying to write dynamic Linq Library query to fetch record on condition,
Customers who has order count is greater than 3 and ShipVia field equal 2.
Below is my syntax what i have tried.
object[] objArr = new object[10];
objArr[0] = 1;
IQueryable<Customer> test = db.Customers.Where("Orders.Count(ShipVia=2)", objArr);
and
IQueryable<Customer> test = db.Customers.Where("Orders.Any(ShipVia=2).Count()", objArr);
But both are not working. In second query Any returns true so it won't work with Count.
Suggest me a way to implement this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您必须使用 Dynamic Linq,您的查询应该如下所示:
If you HAVE to use Dynamic Linq, your query should look like that:
像这样的事情怎么样?
How about something like this.
未经测试,但我相信这应该在一个声明中完成所有操作,假设订单是客户内的集合。
请注意,where 子句中的单个 = 非常危险,因为它会将 2 分配给所有 Shipvias 而不是 test (==)
Untested but I believe this should do it all in one statement, assuming Orders are a collection within Customer.
Note that your single = in your where clause is very dangerous as it'll assign 2 to all shipvias instead of test (==)