1
儘管與其他問題非常相似。 Other question如何使用通用擴展方法上的點符號過濾帶字符串列名的IQueryable
我想知道如何做到這一點,並支持與嵌套對象點表示法。我目前對IQueryable的擴展看起來像這樣。
public static IQueryable<T> WherePropStringContains<T>(this IQueryable<T> query, string propertyName, string contains)
{
var parameter = Expression.Parameter(typeof(T), "x");
var propertyExpression = Expression.Property(parameter, propertyName);
var method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
var someValue = Expression.Constant(contains, typeof(string));
var containsExpression = Expression.Call(propertyExpression, method, someValue);
var lmd = Expression.Lambda<Func<T, bool>>(containsExpression, parameter);
return query.Where(lmd);
}
我想爲屬性名,以支持像「User.Name.First」這要是我沒有使用字符串和通用可能看起來像query.where(x => x.User.Name.First.Contains(contains)
感謝
這應該爲你工作:http://stackoverflow.com/a/39183597/861716 –
看起來很有希望,我會試試看 – matthewdaniel