当前位置:  开发笔记 > 编程语言 > 正文

如何使用lambda和功能C#范例删除不必要的列表

如何解决《如何使用lambda和功能C#范例删除不必要的列表》经验,为你挑选了1个好方法。

Hello Functional C#Friends,

所以这次我试图压缩我的代码并编写更多功能,lambda样式,以及我想创建不必要的列表和类,让编译器为我做的工作.我确实设法以功能方式转换了一小段代码,但之后我不知道如何去做.

var errorList = new List();

IEnumerable resultRows = GetResultRows();

resultRows      
     .Filter(row => row.Field("status").Equals("FAILURE", StringComparison.InvariantCultureIgnoreCase))
     .ForEach(row => { errorList.Add(row); });

if (errorList.Count > 0)
{
    var excludedBooks = new List();
    foreach (DataRow row in errorList)
    {
        if (ToUseBooksList.Contains((string)row["main_book"]))
        {
            BookCheckResults.AddRow(string.Format("Error for MainBook {0}, RiskType {1}",
                                                  row["main_book"], row["risk_type"]));
            if (!excludedBooks.Contains((string)row["main_book"]))
            {
                excludedBooks.Add((string)row["main_book"]);
            }
        }
    }
}

我的扩展方法:

public static void ForEach(this IEnumerable collection, Action action)
{
    if (collection == null)
        throw new ArgumentNullException("collection");
    if (action == null)
        throw new ArgumentNullException("action");

    foreach (var item in collection)
        action(item);
}

public static IEnumerable Filter(this IEnumerable source, Predicate func)
{
    foreach (var item in source)
    {
        if (func(item))
            yield return item;
    }
}

我将非常感谢你能帮我构建这个代码更实用的lambda风格.



1> leppie..:

你为什么在可用Filter时编写自己的扩展方法Where

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有