你最喜欢的LINQ to Objects运算符是什么,它不是内置的?

71

使用扩展方法,我们可以编写方便的LINQ操作符来解决通用问题。

我想听听您在System.Linq命名空间中缺少哪些方法或重载以及您如何实现它们。

干净而优雅的实现,最好使用现有的方法。


看起来你目前得到的大多数实现都选择了减少开销而不是清洁和优雅,但对我个人来说,这使它们更有用。 - Roman Starkov
在这个页面上,能够折叠所有代码块将非常有用 ☺ - Timwi
在 http://extensionmethod.net/ 上有很多 VB 和 C# 的示例。 - p.campbell
3
这个问题很可能应该被锁定,就像这个链接中的问题一样:https://dev59.com/oHVD5IYBdhLWcg3wE3No - Wayne Werner
43个回答

0
/// <summary>
/// Performs the specified action on each element of the IEnumerable.
/// </summary>
public static void ForEachAction<T>(this IEnumerable<T> enumerable, Action<T> action)
{
    if (action == null || enumerable == null)
    {
        throw new ArgumentNullException();
    }

    foreach (var item in enumerable)
    {
        action.Invoke(item);
    }
}

-1

针对IEnumerable<T>的String.Join

    public static string Join<T>(this IEnumerable<T> items, string delimiter)
    {
        var result = new StringBuilder();
        if (items != null && items.Any())
        {
            delimiter = delimiter ?? String.Empty;
            foreach (var item in items)
            {
                result.Append(item);
                result.Append(delimiter);
            }
            result.Length = result.Length - delimiter.Length;
        }
        return result.ToString();
    }

这几乎与JoinString相同。 - Nappy
3
.NET 4 中的 String.Join 方法接受 IEnumerable<T> 参数。 - Ian Mercer

-1
public static IEnumerable<T> Append<T>(this IEnumerable<T> enumerable, T item)
{
 return enumerable.Concat(new[] { item });
}

public static IEnumerable<T> AppendIf<T>(this IEnumerable<T> enumerable, T item, Func<bool> predicate)
{
 return predicate() ? enumerable.Append(item) : enumerable;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接