一
如下界面
我們通常會寫出如下代碼
public IQueryable<Person> Query(IQueryable<Person> source
{
var result = source;
if(string
result = source
if (string
result = source
if (string
result = source
return result;
}
以上代碼有大量的 if 顯得很繁瑣
二
WhereIf 擴展比較簡單
public static IQueryable<T> WhereIf<T>(this IQueryable<T> source
{
return condition ? source
}
上面的代碼可簡化成
public IQueryable<Person> Query(IQueryable<Person> source
{
return source
}
是不是更易讀一些!
當然
public static IEnumerable<T> WhereIf<T>(this IEnumerable<T> source
{
return condition ? source
}
三
namespace System
{
public static class WhereIfExtension
{
public static IQueryable<T> WhereIf<T>(this IQueryable<T> source
{
return condition ? source
}
public static IQueryable<T> WhereIf<T>(this IQueryable<T> source
{
return condition ? source
}
public static IEnumerable<T> WhereIf<T>(this IEnumerable<T> source
{
return condition ? source
}
public static IEnumerable<T> WhereIf<T>(this IEnumerable<T> source
{
return condition ? source
}
}
}
將類放入 System
From:http://tw.wingwit.com/Article/program/net/201311/11659.html