目前我正在使用这段代码来创建自定义过滤器:
var fName = new FilterDescriptor
{
Member = "Name",
MemberType = typeof(string),
Operator = FilterOperator.Contains,
Value = name
};
它将像这样添加到 GridCommand:
gridCommand.FilterDescriptors.Add(fName);
但是,想要基于 Linq lambda 表达式创建过滤器,例如:
IQueryable<CD> query = ...
if (!string.IsNullOrWhiteSpace(Artist))
{
query = query.Where(cd => cd.Artist.Contains(Artist));
}
if (!string.IsNullOrWhiteSpace(Name))
{
query = query.Where(cd => cd.Name.Contains(Name));
}
如何做到这一点?
最佳答案
在 Telerik 的 QueryableExtensions.cs 文件中,这个扩展方法将完成这项工作:
/// <summary>
/// Filters a sequence of values based on a collection of <see cref="IFilterDescriptor"/>.
/// </summary>
/// <param name="source">The source.</param>
/// <param name="filterDescriptors">The filter descriptors.</param>
/// <returns>
/// An <see cref="IQueryable" /> that contains elements from the input sequence
/// that satisfy the conditions specified by each filter descriptor in <paramref name="filterDescriptors" />.
/// </returns>
public static IQueryable Where(this IQueryable source, IEnumerable<IFilterDescriptor> filterDescriptors) { }
关于model-view-controller - Telerik MVC 网格 : Create custom FilterDescriptor based on lambda expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6788194/