我想了解更多有关linq的信息,例如,如果我想实现一个Select我会像这样实现
public static IEnumerable<TResult> Select<TSource, TResult>(IEnumerable<TSource> source, Func<TSource, TResult> selector)
{
foreach (var item in source)
{
yield return selector(item);
}
}
这样的地方
public static IEnumerable<TSource> Where<TSource>(IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
foreach (var item in source)
{
if (predicate(item))
yield return item;
}
}
OrderBy怎么样?
答案 0 :(得分:14)
答案 1 :(得分:1)
要了解当前的实施模式,您可以尝试这样做:
public static IEnumerable<TSource> OrderBy<TSource, TKey>(
IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
var items = source.ToArray();
var keys = items.Select(keySelector).ToArray();
Array.Sort(keys, items);
foreach (var item in items)
{
yield return item;
}
}