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

时间:2019-01-08 07:51:02

标签: c# linq

在我的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-ANSATTE

这意味着我需要检查组名是否也包含三个字母。我认为我需要使用正则表达式,但无法入门。

有帮助吗?

3 个答案:

答案 0 :(得分:2)

我已将您的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

答案 1 :(得分:0)

如果正则表达式是您要找的东西,那么您可以使用类似{{1}}

答案 2 :(得分:0)

以下内容似乎可以回答所有必要条件,而不会带来误报:

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

基本上确保输入字符串的前缀恰好是3个大写英文字母。