我正在寻找一种通过.NET中的DirectoryServices查找包含模式的电子邮件的方法。
const ContextType contextType = ContextType.Domain;
var principalContext = new PrincipalContext(contextType);
var userPrincipal = new UserPrincipal(principalContext)
{
EmailAddress = "michelle*",
};
foreach (var principal in principalSearcher.FindAll().Cast<UserPrincipal>())
{
Console.WriteLine(principal.EmailAddress);
}
如果我用EmailAddress = "*michelle*"
更改上面的代码,它将无效,所以我觉得我只能执行“以”开头的搜索方式(这不是我想的那么糟糕......)。我仍然希望有一些“喜欢”或“包含模式”搜索,这可能吗?如果是这样,怎么样?
根据:https://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx
在公共名称的某处获取包含“bob”的条目:
(cn=*bob*)
我原本预计该模式也可以用于电子邮件,是不是真的如此?
[编辑] 我想尽可能多地利用过滤系统,以避免接收到过多需要过滤的用户。
答案 0 :(得分:0)
您可以使用正则表达式作为以下代码:
static void Main(string[] args)
{
var myList = new List<string>
{
"a2michelle",
"michelle",
"michelle3f",
"xxmichellezz",
"noMatching",
};
string pattern = @"\S*michelle\S*";
System.Text.RegularExpressions.Regex regx = new System.Text.RegularExpressions.Regex(pattern);
var matchedList = myList.Where(m => regx.IsMatch(m)).ToList();
foreach(var match in matchedList)
{
Console.WriteLine(match);
}
// end of main method
}
输出是:
a2michelle
米歇尔
michelle3f
xxmichellezz