在我的存储库中,我发现来自该线程的 WhereIf Linq-to-sql 扩展(LINQ to SQL Where Clause Optional Criteria)非常有用——尤其是 IEnumerable 版本。
我想对 Include() 语句做同样的事情,但我不太擅长编写扩展。我被困在扩展的声明上。
谁能帮我将 WhereIf 扩展移植到 IncludeIf?
在我的存储库中,我发现来自该线程的 WhereIf Linq-to-sql 扩展(LINQ to SQL Where Clause Optional Criteria)非常有用——尤其是 IEnumerable 版本。
我想对 Include() 语句做同样的事情,但我不太擅长编写扩展。我被困在扩展的声明上。
谁能帮我将 WhereIf 扩展移植到 IncludeIf?
有两种Include(...)
,一种已经是 to 的扩展方法IQueryable<T>
,另一种是 的方法DbQuery<T>
。这应该给你两个扩展IncludeIf<>
public static class QueryableEx
{
public static IQueryable<T> IncludeIf<T, TProperty>(this IQueryable<T> source, bool condition, Expression<Func<T, TProperty>> path) where T : class
{
if (condition)
{
return source.Include(path);
}
else
{
return source;
}
}
public static DbQuery<TResult> IncludeIf<TResult>(this DbQuery<TResult> query, bool condition, string path)
{
if (condition)
{
return query.Include(path);
}
else
{
return query;
}
}
}
请记住,您需要像我所做的那样将它们放在静态类中。