自定义where方法

Mer*_*ert -2 c# linq

我有一个无法使用的项目System.Linq,所以我尝试创建一个与 linq 完全相同的 cutsomWhere 方法,我该怎么做?

var x = y.ToList().Where(t => t.Title != "Foo");
Run Code Online (Sandbox Code Playgroud)

解决方案1

protected void Page_Load(object sender, EventArgs e)
{
    var x = y.ToList().Where<Microsoft.SharePoint.Navigation.SPNavigationNode>(x => x.Title != "Foo");
}

public static class Extensions
{
    public static IEnumerable<T> Where<T>(this IEnumerable<T> source, Func<T, bool> filter)
    {
        foreach (var item in source)
        {
            if (filter(item))
                yield return item;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:.NET v 2.0

And*_*tar 5

这是一个扩展方法:

public static IEnumerable<T> Where<T>(this IEnumerable<T> source, Func<T, bool> filter) 
{
    foreach (var item in source)
    {
        if (filter(item))
            yield return item;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Sayse我还没有读过你提到的博客,但关于我唯一会做的不同的事情(确实有作为几个答案的一部分,以及我的预linq代码,它接受了它定义的委托,因为`Func`尚不存在)的方法是将“filter”重命名为“predicate”。(如果它是在自己的程序集之外使用,我会在传递给单独的私有方法之前进行空检查)。这段代码是显而易见的实现。 (2认同)