C# 如何识别非人类用户?

C# 如何识别非人类用户?,c#,dynamics-crm-2015,query-expressions,C#,Dynamics Crm 2015,Query Expressions,列出系统中的所有用户,我注意到其中一些是系统用户,根本没有工作时间。目前,我只是列出它们并从我的循环中排除,这是一种Q&D方法,我更喜欢正确地做 我没有找到有关systemuser实体的任何特定信息,这些信息会告诉我某个配置文件是真实的(即在Office 365门户中创建的)还是默认情况下由我的MS提供的 Q&D代码如下所示 QueryExpression userQuery = new QueryExpression { EntityName = "systemuser", ... }; IE

列出系统中的所有用户,我注意到其中一些是系统用户,根本没有工作时间。目前,我只是列出它们并从我的循环中排除,这是一种Q&D方法,我更喜欢正确地做

我没有找到有关systemuser实体的任何特定信息,这些信息会告诉我某个配置文件是真实的(即在Office 365门户中创建的)还是默认情况下由我的MS提供的

Q&D代码如下所示

QueryExpression userQuery = new QueryExpression { EntityName = "systemuser", ... };
IEnumerable<Entity> users = service.RetrieveMultiple(userQuery).Entities;

IEnumerable<String> automatics = new[] { "INTEGRATION", "Support User", "SYSTEM" };
  foreach (Entity user in users.Where(element
    => !automatics.Contains(element.GetAttributeValue<String>("fullname")))) { ... }
QueryExpression userQuery=newqueryexpression{EntityName=“systemuser”,…};
IEnumerable users=service.RetrieveMultiple(userQuery).Entities;
IEnumerable automatics=new[]{“集成”、“支持用户”、“系统”};
foreach(users.Where(元素)中的实体用户
=>!automatics.Contains(element.GetAttributeValue(“全名”)){…}

第二个最好的解决方案是,如果无法确定谁在自动列表上,谁是真正的花花公子,那么就列出一个详尽的例外情况列表。我的google fu再一次让我失望,因为我在entity systemuser的自动创建实例的完整列表中没有找到任何文档。

一种方法是检查
CreatedBy
字段;对于用户
SYSTEM
INTEGRATION
,它是
NULL
。对于CRM管理员用户来说,这个字段也是<代码> null < /代码>,因此,如果管理员正在积极地使用人,则应该考虑排除管理员用户。

FilterExpression humanFilter = new FilterExpression();
humanFilter.AddCondition(new ConditionExpression("createdby", ConditionOperator.NotNull));

if (retrieveAdminUser)
{
  humanFilter.FilterOperator = LogicalOperator.Or;
  humanFilter.AddCondition(
    new ConditionExpression("domainname", ConditionOperator.Equal, "admin@crm"));
}

userQuery.Criteria.AddFilter(humanFilter);

有关管理员用户+1的提示。