到目前为止我有这个查询:
var msg = ModelState.Values
.Where(x => x.Errors.Any())
.Select(c => c.Errors.Select(d => d.ErrorMessage).Aggregate((e, f) => (e ?? "") + "<br/>" + f))
.Aggregate((x, y) => (x ?? "") + "<br/>" + y);
这工作得很好,但我需要过滤掉重复的错误消息。我尝试将 GroupBy() 和 Distinct() 添加到获取 ErrorMessage 的谓词之前和之后的几个位置。我错过了什么?
如果我按原样运行它,我会收到以下结果:
"Contact Email address invalid<br/>Contact Email address invalid"
此处的每个 ErrorMessage 值都是“联系人电子邮件地址无效”。这些是我想过滤掉的重复项。
最佳答案
我可以推荐一个替代方案吗?
假设您想要不同的消息,由 break 标记分隔:
var items = ModelState.Values
.SelectMany(c => c.Errors.Select(d => d.ErrorMessage))
.Distinct()
.ToArray();
string msg = string.Join("<br/>", items);
关于c# - 尝试将 Distinct() 放入相对复杂的 LINQ 查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085077/