我如何组合.从两个LINQ表达式中选择一个?

Ang*_*ela 3 c# linq

我有以下代码片段.

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;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以将这两者结合起来,以便GetErrorsFromModelState将返回所有ErrorMessage和Exception值?

Kir*_*rst 6

你可以用 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);
}
Run Code Online (Sandbox Code Playgroud)

或者您可以将它们选择为单个集合

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;
}
Run Code Online (Sandbox Code Playgroud)