今天在使用linq的过程中,思考如果是自己去实现where, group等方法,应该怎么去做呢?
对于Where方法,其实本质就是写一个传入参数为Func<T, Boolean> func 的委托。
上代码:
1. 定义一个IEnumerable类型的扩展方法。传入委托方法。
static public class IEnumerableExtensions
{
static public List<T> CustomWhere<T>(this IEnumerable<T> sourceData, Func<T, Boolean> func)
{
List<T> returnData = new List<T>(){ } ;
foreach(var data in sourceData)
{
if (func(data))
{
returnData.Add(data);
}
}
return returnData;
}
}
2. 测试:
int[] amount = new int[] {23, 40, 50, 60, 29 };
IEnumerable<int> largeAmount = amount.CustomWhere(e => e > 50);
成功过滤amount.