编程语言
首页 > 编程语言> > c# – 如何使用linq动态过滤子集合

c# – 如何使用linq动态过滤子集合

作者:互联网

我正在尝试过滤用户请求的结果.
例如,您有订单和订单详细信息,产品是子集合.

当用户想要按产品过滤我因为没有属性或字段’ICollection1’中存在“产品”而收到错误

我正在写这样的查询.

var orders = _uow.Repository<ORDERS>()
    .Query()
    .Where("PRODUCTS.HEADING.ToLower().Contains(\"foo\")")
    .Include("ORDER_DETAILS")
    .Include("ORDER_DETAILS.PRODUCTS")
    .ToList();

所以不可能像这样过滤子集合吗?或者任何方式过滤?

谢谢.

解决方法:

从命名类/属性的方式来看,很难猜出哪一个是单个对象,哪一个是集合属性.

如果ORDERS类属性ORDER_DETAILS是ORDER_DETAILS类的集合,并且ORDER_DETAILS类属性PRODUCTS是具有字符串属性HEADINGS的PRODUCTS类的单个对象,则以下应该执行以下操作:

.Where("ORDER_DETAILS.Any(PRODUCTS.HEADING.ToLower().Contains(\"foo\"))")

它与跳过lambda参数的静态查询基本相同

.Where(o => o.ORDER_DETAILS.Any(d => d.PRODUCTS.HEADING.ToLower().Contains("foo")))

标签:c,linq,dynamic-linq
来源: https://codeday.me/bug/20190628/1310913.html