【发布时间】:2020-04-20 10:59:56
【问题描述】:
我正在根据用户选择的过滤器生成动态查询。然后我对嵌套对象运行此查询并需要评估结果,但是当我尝试深入查询嵌套对象属性时,它总是返回 false。
这是我的嵌套对象HoldingClass,它有行,而行又具有我需要评估的属性。
class HoldingClass
{
public IEnumerable<Rows> Rows { get; set; }
}
class Rows
{
public IEnumerable<Attribute> Attributes { get; set; }
public string StringProp { get; set; }
}
class Attribute
{
public string Key { get; set; }
public object Value { get; set; }
}
我正在使用扩展类从我的 HoldingClass 生成 Queryable:
public static IQueryable<HoldingClass> Where(this HoldingClass holdingClass, string predicate, params object[] values)
=> new List<HoldingClass> {holdingClass}.AsQueryable().Where(predicate, values);
然后我通过插入一个字符串作为“IfCriteria”来运行查询,示例查询:
var ifCriteria = "Rows.Any() AND Rows.Where(Attributes.Any(Key == "\Filter1\" AND Value == "\ValueToSwitchOn\") AND StringProp == "\PropValue\").Any()"
if (holdingClass.Where(ifCriteria).Any()) {
}
有什么想法我做错了吗?如果我只是打开“StringProp”,那么它可以工作,但如果我更深入,它就会停止。
【问题讨论】:
标签: c# .net linq dynamic-linq