Linq - 如何将此代码转换为 linq

发布于 2024-11-01 04:19:02 字数 273 浏览 1 评论 0原文

我的 Linq-fu 还不够好,无法将以下内容翻译成一两行。

 var errors = new List<string>();
 foreach (var key in ModelState.Keys)
 {
   errors.Add(ModelState[key].Errors.FirstOrDefault().ErrorMessage);
 }

 return Json(new { success = false, errors = errors });

My Linq-fu is not good enough to translate the following into hopefully one or two lines.

 var errors = new List<string>();
 foreach (var key in ModelState.Keys)
 {
   errors.Add(ModelState[key].Errors.FirstOrDefault().ErrorMessage);
 }

 return Json(new { success = false, errors = errors });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

原来分手还会想你 2024-11-08 04:19:02

closes 翻译(这是不安全的,因为 FirstOrDefault() 可能返回 null,在这种情况下,您的代码将引发空引用异常):

return Json(new { success = false,
                  errors = ModelState.Values
                      .Select(ms => ms.Errors.FirstOrDefault().ErrorMessage)
                      .ToList() });

您可以使用以下方法使其更安全:

return Json(new { 
    success = false,
    errors =
        ModelState.Values
                  .Select(ms => 
                          { 
                              var error = ms.Errors.FirstOrDefault();
                              return error == null ? error.ErrorMessage : "";
                          })
                  .ToList() });

The closes translation (which is unsafe because FirstOrDefault() could return null in which case your code would throw a null reference exception) would be:

return Json(new { success = false,
                  errors = ModelState.Values
                      .Select(ms => ms.Errors.FirstOrDefault().ErrorMessage)
                      .ToList() });

You could make it a bit safer using:

return Json(new { 
    success = false,
    errors =
        ModelState.Values
                  .Select(ms => 
                          { 
                              var error = ms.Errors.FirstOrDefault();
                              return error == null ? error.ErrorMessage : "";
                          })
                  .ToList() });
帅冕 2024-11-08 04:19:02

确切的翻译是:

var errors = ModelState.Keys.Select(k => ModelState[k].Errors.First().ErrorMessage);
return Json(new { success = false, errors = errors.ToList() });

如果 ModelState 是一个 Dictionary 或类似的,您可以直接使用这些值:

var errors = ModelState.Values.Select(v => v.Errors.First().ErrorMessage);
return Json(new { success = false, errors = errors.ToList() });

The exact translation would be:

var errors = ModelState.Keys.Select(k => ModelState[k].Errors.First().ErrorMessage);
return Json(new { success = false, errors = errors.ToList() });

Provided ModelState is a Dictionary<TKey,TValue> or similar, you could use the values directly:

var errors = ModelState.Values.Select(v => v.Errors.First().ErrorMessage);
return Json(new { success = false, errors = errors.ToList() });
水水月牙 2024-11-08 04:19:02
return new Json(new 
   {
      success = false,
      errors = ModelState.Keys.Select(k => ModelState[key].Errors.First().ErrorMessage).ToList()
   });
return new Json(new 
   {
      success = false,
      errors = ModelState.Keys.Select(k => ModelState[key].Errors.First().ErrorMessage).ToList()
   });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文