我有ModelState
FluentValidaiton
。如果视图模型无效,我想简单地返回验证错误列表,仅此而已。我已经制作了这个LINQ语句并且它工作正常,但是我想知道它是否可以用更短(更好)的方式编写。
我知道我可以提取扩展方法而且我会,问题更多是关于优化LINQ语句本身。
有问题的LINQ:
return ModelState.Select(x => x.Value).Select(x => x.Errors).SelectMany(x => x.Select(z => z.ErrorMessage));
return ModelState
输出:
{
"Login":{
"childNodes":null,
"children":null,
"key":"Login",
"subKey":{
"buffer":"Login",
"offset":0,
"length":5,
"value":"Login",
"hasValue":true
},
"isContainerNode":false,
"rawValue":null,
"attemptedValue":null,
"errors":[
{
"exception":null,
"errorMessage":"'Login' should not be empty."
}
],
"validationState":1
},
"Password":{
"childNodes":null,
"children":null,
"key":"Password",
"subKey":{
"buffer":"Password",
"offset":0,
"length":8,
"value":"Password",
"hasValue":true
},
"isContainerNode":false,
"rawValue":null,
"attemptedValue":null,
"errors":[
{
"exception":null,
"errorMessage":"'Password' should not be empty."
}
],
"validationState":1
}
}
return ModelState.Select(x => x.Value).Select(x => x.Errors).SelectMany(x => x.Select(z => z.ErrorMessage));
输出:
[
"'Login' should not be empty.",
"'Password' should not be empty."
]
答案 0 :(得分:1)
试试这个:
var errorList = ModelState.Values.SelectMany(m => m.Errors)
.Select(e => e.ErrorMessage)
.ToList();
答案 1 :(得分:1)
我用这个
modelState.Keys.SelectMany(
key => modelState[key].Errors
.Select(x => x.ErrorMessage)).ToList()
虽然,我确实创建了一个自定义 ValidationError 类,它可以获取更多数据,但这是它的要点。