代码之家  ›  专栏  ›  技术社区  ›  mohsinali1317

检查LINQ查询中的字符串模式

  •  3
  • mohsinali1317  · 技术社区  · 6 年前

    在我的C代码中,我有一个这样的列表

    public static List<string> Teachers_Group = new List<string>
    {
        "-RO-ANSATTE",
        "-RO-GJESTEANSATTE"
    };
    

    我在检查的LINQ查询中有一个WHERE子句

    bool amITeacher = domainUser.Groups.Where(k => Helpers.Constants.Teachers_Group.Any(k.FullName.Contains)).Any();
    

    现在我要检查要检查的字符串是否具有类似的模式

    XXX-RO-ANSAT

    这意味着我需要检查groupname是否也有三个字母。我想我需要使用regex,但我无法开始。

    有什么帮助吗?

    3 回复  |  直到 6 年前
        1
  •  2
  •   Derviş Kayımbaşıoğlu    6 年前

    我把你的linq表达式改成了 Regex

    bool amITeacher = domainUser.Groups.Where(k => 
        Helpers.Constants.Teachers_Group.Any(t => 
            Regex.IsMatch(k, @"^[A-Za-z0-9]{3}\" + t + "$")))
        .Any();
    

    Working Fiddle

        2
  •  0
  •   Rahul    6 年前

    如果你要找的是regex,那么你可以有 ^([A-Za-z]{3})-RO-.*

        3
  •  0
  •   JonyVol    6 年前

    以下似乎回答了所有必要的条件,没有误报:

      bool amITeacher = domainUser.Groups.Where(k => Helpers.Constants.Teachers_Group.Any(x => Regex.IsMatch(x, "\\A[A-Z]{3}" + k))).Any();
    

    基本上确保输入字符串前面正好有3个大写英文字母。