我正在使用表达式树构建泛型linq查询.在子集合上创建表达式时我很困惑.由于类型不兼容,方法调用会爆炸.通常我知道要放在那里,但Any()方法调用让我感到困惑.我尝试了所有我能想到的类型而且没有运气.任何帮助,将不胜感激.
这是我的实体类:
public class Story : Entity
{
public string Author { get; set; }
public IList<string> Contributors { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我要生成表达式树的查询:
var stories = new List<Story>();
stories.Where(p => p.Author.Contains("Test") || p.Contributors.Any(c => c.Contains("Test")));
Run Code Online (Sandbox Code Playgroud)
到目前为止我得到了什么
public interface IFilterCriteria
{
string PropertyToCompare { get; set; }
object ValueToCompare { get; set; }
FilterOperator FilterOperator { get; set; }
bool IsList { get; set; }
Expression Expression { get; set; }
}
public static IQueryable<T> Filter<T>(this IQueryable<T> query, IList<IFilterCriteria> filterCriterias, …Run Code Online (Sandbox Code Playgroud)