微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

循环中的LINQ查询检查空条件并寻找更干净的方式编写此代码

如何解决循环中的LINQ查询检查空条件并寻找更干净的方式编写此代码

我有代码遍历JSON文件中的数据,因此基于第一个,或第二个或第三个变量的通配符条件,我正在执行正则表达式,然后将其写出,但我真的不喜欢它的方式看起来。

因此,可读性很重要,而且性能很高,但是数据完整性和错误处理等也很重要

写这个的更好的方法是什么?

for loop.... 

     var firstWildCard = vidaBiliy.SponsorPackage.Where(s => Regex.IsMatch(s.ExternalPolicy,$"^.*{Regex.Escape(HcdpPmtFctrCd)}{Regex.Escape(hccCpmtFctrCd)}$")).FirstOrDefault()?.PackageID;
     if(firstWildCard == null)
     {
         var secondWildCard = vidaBiliy.SponsorPackage.Where(s => Regex.IsMatch(s.ExternalPolicy,$"^{Regex.Escape(hcdpPlnCvgCD)}.*{Regex.Escape(hccCpmtFctrCd)}$")).FirstOrDefault()?.PackageID;
             if(secondWildCard == null)
             {
                 var thirdWildCard = vidaBiliy.SponsorPackage.Where(s => Regex.IsMatch(s.ExternalPolicy,$"^{Regex.Escape(hcdpPlnCvgCD)}{Regex.Escape(HcdpPmtFctrCd)}.*$")).FirstOrDefault()?.PackageID;

             }
     }

解决方法

检查一下

var patterns = new string[]{
  $"^.*{Regex.Escape(HcdpPmtFctrCd)}{Regex.Escape(hccCpmtFctrCd)}$",$"^{Regex.Escape(hcdpPlnCvgCD)}.*{Regex.Escape(hccCpmtFctrCd)}$",$"^{Regex.Escape(hcdpPlnCvgCD)}{Regex.Escape(HcdpPmtFctrCd)}.*$"
}

var wildcards = new List<String>();

foreach (var pattern in patterns)
{
    var matchResult = vidaBiliy.SponsorPackage.Where(s => Regex.IsMatch(s.ExternalPolicy,pattern)).FirstOrDefault()?.PackageID;
    wildcards.Add(matchResult);
    
    if (matchResult != null) 
        break;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。