如何在IQueryable中应用多个where条件

时间:2019-05-30 07:54:58

标签: c# .net linq iqueryable

表中有很多列想要比较列之间的字符串。假设用户输入“测试” 想要将输入数据(“测试”)与列(名称,代码)值进行比较。

多个条件是:

queryObject.SearchBy =“测试”

var columnsFilterMap = new Dictionary<string, Expression<Func<Entities.Setup.Gender, bool>>>
{
    ["Name"] = v => v.Name.Contains(queryObject.SearchBy),
    ["Code"] = v => v.Code.Contains(queryObject.SearchBy)
};

想在IQueryable中应用上述条件,请遵循以下方法,但不起作用。

应用

query = query.ApplyFiltering(queryObject, columnsFilterMap);

扩展方法

public static IQueryable<T> ApplyFiltering<T>(this IQueryable<T> query, 
    IQueryObject queryObj, 
    Dictionary<string, Expression<Func<T, bool>>> columnsFilterMap)
{
    var result = query;

    if (string.IsNullOrWhiteSpace(queryObj.SearchBy))
        return result;


    foreach (var item in columnsFilterMap)
    {
        result = result.Where(columnsFilterMap[item.Key]);

    }

    return result;
}

0 个答案:

没有答案