搜索某些邮件地址:方法"包含"不受支持

时间:2016-05-02 08:17:43

标签: c# linq azure-active-directory

using Microsoft.Azure.ActiveDirectory.GraphClient,我想从Azure Active Directory获取20个帐户;给他们的电子邮件地址我现在可以向Azure AD服务器发送20个请求,但与此同时,我的脚本超时。所以我尝试了一个请求:

public override IEnumerable<IDirectoryEntry> GetEntriesForMails(IEnumerable<MailAddress> emails)
{
    foreach(IUser user in _connection.Client.Users.Where(x => emails.Contains(x.Mail)).FlattenPages())
    {
        yield return new AzureDirectoryEntry(user, this);
    }

这会引发错误

  

&#34;包含&#34;不受支持。

是否有其他受支持的方式可以在一次往返服务器的途中获取20个电子邮件地址的所有用户帐户?

2 个答案:

答案 0 :(得分:0)

尝试代码:

 List<IUser> users = activeDirectoryClient.Users.ExecuteAsync().Result.CurrentPage.ToList();
 List<IUser> user1 = users.Where(u => emails.Any(e => e.Contains(u.Mail))).ToList();

答案 1 :(得分:0)

根据Microsoft员工的说法,库中没有直接的解决方案。

我们可以提出的最佳解决方案是保留一个客户端查找表,将电子邮件地址映射到ObjectIds;并定期更新该表(每天/每周,以及每当查找失败时)。

然后,可以通过一次调用(GetObjectsByObjectIdsAsync方法)从Azure AD获取20个ObjectIds的对象。