c# iqueryable whereif

在 C# 中,可以使用 IQueryable 接口来构建可查询的数据源。其中,WhereIf() 方法是扩展方法,用于在满足条件的情况下,对 IQueryable 进行 Where 条件筛选。该方法可以在条件成立的情况下应用 Where 条件筛选,否则不应用。

下面是 WhereIf() 方法的示例代码:

public static IQueryable<T> WhereIf<T>(this IQueryable<T> source, bool condition, Expression<Func<T, bool>> predicate)
    if (condition)
        return source.Where(predicate);
    return source;

其中,source 参数为 IQueryable 类型的数据源,condition 参数为条件,predicate 参数为一个表达式,表示需要筛选的条件。在使用 WhereIf() 方法时,只需要传入需要进行筛选的数据源、条件和筛选条件即可。

示例代码:

public IQueryable<Product> GetProducts(string name, decimal? price)
    var products = _context.Products;
    if (!string.IsNullOrEmpty(name))
        products = products.Where(p => p.Name.Contains(name));
    if (price.HasValue)
        products = products.WhereIf(price > 0, p => p.Price >= price.Value);
    return products;

以上示例代码中,我们定义了一个 GetProducts() 方法,用于获取商品列表。在该方法中,我们首先获取了数据库中的所有商品数据,然后使用 WhereIf() 方法来根据名称和价格进行筛选,最后返回符合条件的商品列表。

希望以上信息能够对您有所帮助。

  •