Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在这种情况下,如何通过使用lambda或linq避免使用嵌套的foreach语句?_C#_Asp.net Mvc 3_Linq - Fatal编程技术网

C# 在这种情况下,如何通过使用lambda或linq避免使用嵌套的foreach语句?

C# 在这种情况下,如何通过使用lambda或linq避免使用嵌套的foreach语句?,c#,asp.net-mvc-3,linq,C#,Asp.net Mvc 3,Linq,在这种情况下,如何通过使用lambda或linq避免使用嵌套的foreach语句?已经很晚了,我似乎不知道如何访问ErrorMessage属性,而不必恢复到嵌套的foreach语句。如果完全使用Lambda或Linq重写代码,那么等效的方法是什么 public static List<String> ExtractErrors(this ModelStateDictionary modelStateDictionary) { List<S

在这种情况下,如何通过使用lambda或linq避免使用嵌套的foreach语句?已经很晚了,我似乎不知道如何访问ErrorMessage属性,而不必恢复到嵌套的foreach语句。如果完全使用Lambda或Linq重写代码,那么等效的方法是什么

public static List<String> ExtractErrors(this ModelStateDictionary modelStateDictionary)
        {
            List<String> errors = new List<String>();

            var modelErrorCollection = (from modelState in modelStateDictionary.Values
                                        where modelState.Errors != null && modelState.Errors.Count > 0
                                        select modelState.Errors).ToList();

            foreach (var item in modelErrorCollection)
            {
                foreach (ModelError modelError in item)
                {
                    errors.Add(modelError.ErrorMessage);
                }
            }

            return errors;
        }
公共静态列表提取错误(此ModelStateDictionary ModelStateDictionary)
{
列表错误=新列表();
var modelErrorCollection=(来自modelStateDictionary.Values中的modelState
其中modelState.Errors!=null&&modelState.Errors.Count>0
选择modelState.Errors).ToList();
foreach(modelErrorCollection中的变量项)
{
foreach(项目中的ModelError ModelError)
{
添加(modelError.ErrorMessage);
}
}
返回错误;
}

不是错误。添加(modelErrorCollection.SelectMany(x=>x))?

不是错误。添加(modelErrorCollection.SelectMany(x=>x))?

你会想为此使用
SelectMany

    public static List<String> ExtractErrors(this ModelStateDictionary modelStateDictionary)
    {
        var modelErrorCollection = (from modelState in modelStateDictionary.Values
                                    where modelState.Errors != null && modelState.Errors.Count > 0
                                    select modelState.Errors)
                                    .SelectMany(item=>item)
                                    .Select(modelError=>modelError.ErrorMessage)
                                    .ToList();
         return modelErrorCollection;
     }
公共静态列表提取错误(此ModelStateDictionary ModelStateDictionary)
{
var modelErrorCollection=(来自modelStateDictionary.Values中的modelState
其中modelState.Errors!=null&&modelState.Errors.Count>0
选择modelState.Errors)
.SelectMany(项=>item)
.Select(modelError=>modelError.ErrorMessage)
.ToList();
返回模式错误收集;
}

您需要为此使用
选择many

    public static List<String> ExtractErrors(this ModelStateDictionary modelStateDictionary)
    {
        var modelErrorCollection = (from modelState in modelStateDictionary.Values
                                    where modelState.Errors != null && modelState.Errors.Count > 0
                                    select modelState.Errors)
                                    .SelectMany(item=>item)
                                    .Select(modelError=>modelError.ErrorMessage)
                                    .ToList();
         return modelErrorCollection;
     }
公共静态列表提取错误(此ModelStateDictionary ModelStateDictionary)
{
var modelErrorCollection=(来自modelStateDictionary.Values中的modelState
其中modelState.Errors!=null&&modelState.Errors.Count>0
选择modelState.Errors)
.SelectMany(项=>item)
.Select(modelError=>modelError.ErrorMessage)
.ToList();
返回模式错误收集;
}