1
我創建一個通用凡過濾器(在Contains
過濾器只關心)的偉大工程至今:動態凡通過導航篩選器屬性
private static MethodInfo contains = typeof(string).GetMethod("Contains");
private static Expression<Func<T, bool>> GetFilter<T>(string propertyName, string value)
{
var item = Expression.Parameter(typeof(T), "item");
var member = Expression.Property(item, propertyName);
var constant = Expression.Constant(value);
var body = Expression.Call(member, contains, constant);
return Expression.Lambda<Func<T, bool>>(body, item);
}
有沒有什麼辦法讓我可以搜索我可以延長這個由導航屬性?我很新使用Expression
,所以我不確定要嘗試什麼。
一個例子是:
public class A
{
public int BId { get; set; }
public B B { get; set; }
}
public class B
{
public string Name { get; set; }
}
dbContext.As
.Where(GetFilter<A>("B.Name", "Hello World"))
.ToList();
但這未能對Expression.Property("B.Name")
有:
Instance屬性
B.Name
沒有爲類型A
您將獲得所有你從https://github.com/kahanu/System.Linq.Dynamic/blob/master/Src/System.Linq.Dynamic/DynamicLinq.cs – haim770