[英]How can I combine .Select from two LINQ expressions into one?
我有以下代碼片段。
protected IEnumerable<string> GetErrorsFromModelState()
{
var errors = ModelState.SelectMany(x => x.Value.Errors
.Select(error => error.ErrorMessage));
return errors;
}
protected IEnumerable<string> GetErrorsFromModelState()
{
var exceptions = ModelState.SelectMany(x => x.Value.Errors
.Select(error => error.Exception));
return exceptions;
}
有沒有辦法可以將這兩者結合起來,以便GetErrorsFromModelState將返回所有ErrorMessage和Exception值?
你可以使用Union
protected IEnumerable<string> GetErrorsFromModelState()
{
var exceptions = ModelState.SelectMany(x => x.Value.Errors
.Select(error => error.Exception));
var errors = ModelState.SelectMany(x => x.Value.Errors
.Select(error => error.ErrorMessage));
return exceptions.Union(errors);
}
或者您可以將它們選擇為單個集合
protected IEnumerable<string> GetErrorsFromModelState()
{
var items = ModelState.SelectMany(x => x.Value.Errors
.SelectMany(error =>
{
var e = new List<string>();
e.Add(error.Exception);
e.Add(error.ErrorString);
return e;
}));
return items;
}
當然 - 使用Enumerable.Union擴展方法
protected IEnumerable<string> GetErrorsAndExceptionsFromModelState()
{
var errors = ModelState
.SelectMany(x => x.Value.Errors.Select(error => error.ErrorMessage)
.Union(x.Value.Errors.Select(error => error.Exception.Message)));
return errors;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.