如何解决如果linq语句C#中未满足值,则显示值
我有一条疑问句,如果过滤出状态并且仅将“合格”,“已提交”,“正在处理”,“已筹集资金”显示为“最后状态”,那么如果状态不是那些我该如何添加,则将“最后状态”显示为N / A
public string LastStatus
{
get
{
return Loans
.SelectMany(s => s.LoanMilestones)
.Where(w => new List<string> { "Qualified","Submitted","Processing","Funded" }.Contains(w.Milestone))
.OrderByDescending(o => o.MilestoneDate)
.FirstOrDefault()?.Milestone;
}
}
解决方法
代码的第一个巨大问题是,您正在为初始数组中的每个项目创建并填充一个全新的列表。第二个大问题是您正在临时数组中进行线性搜索。考虑到这两个问题,您似乎想要这样的东西:
static readonly HashSet<string> validMilestones = new()
{
"Qualified","Submitted","Processing","Funded"
};
public string LastStatus => Loans
.SelectMany(s => s.LoanMilestones)
.Select(w => validMilestones.Contains(w.Milestone) ? w.Milestone : "N/A")
.OrderByDescending(o => o.MilestoneDate)
.FirstOrDefault()?.Milestone;
顺便说一句,代码的第三个大问题是您正在使用字符串。枚举在语言中(实际上,在每种语言中)都是有原因的:正是这样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。