Hello Functional C#Friends,
所以这次我试图压缩我的代码并编写更多功能,lambda样式,以及我想创建不必要的列表和类,让编译器为我做的工作.我确实设法以功能方式转换了一小段代码,但之后我不知道如何去做.
var errorList = new List<DataRow>();
IEnumerable<DataRow> resultRows = GetResultRows();
resultRows
.Filter(row => row.Field<string>("status").Equals("FAILURE", StringComparison.InvariantCultureIgnoreCase))
.ForEach(row => { errorList.Add(row); });
if (errorList.Count > 0)
{
var excludedBooks = new List<string>();
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"]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的扩展方法:
public static void ForEach<T>(this IEnumerable<T> collection, Action<T> 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<T> Filter<T>(this IEnumerable<T> source, Predicate<T> func)
{
foreach (var item in source)
{
if (func(item))
yield return item;
}
}
Run Code Online (Sandbox Code Playgroud)
我将非常感谢你能帮我构建这个代码更实用的lambda风格.
归档时间: |
|
查看次数: |
947 次 |
最近记录: |