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风格.
你为什么在可用Filter
时编写自己的扩展方法Where
?