Linq to Crm(2011)按用户名搜索systemuser时遇到的问题

Linq to Crm(2011)按用户名搜索systemuser时遇到的问题,linq,dynamics-crm-2011,dynamics-crm,Linq,Dynamics Crm 2011,Dynamics Crm,我有一个win应用程序,它使用linq to crm通过用户名查询系统用户 在Crm 2011(IFD)中。下面的代码片段显示了我正在尝试的内容 完成。该方法执行时没有错误,但未找到任何记录。 用户名在CRM中显示为“域\测试用户” publicstaticsystemuser LookUpSystemUser() { var username=“域\\testuser”); var list=(来自Context.CreateQuery()中的c) 其中c.DomainName.Equals(

我有一个win应用程序,它使用linq to crm通过用户名查询系统用户 在Crm 2011(IFD)中。下面的代码片段显示了我正在尝试的内容 完成。该方法执行时没有错误,但未找到任何记录。 用户名在CRM中显示为“域\测试用户”

publicstaticsystemuser LookUpSystemUser()
{
var username=“域\\testuser”);
var list=(来自Context.CreateQuery()中的c)
其中c.DomainName.Equals(用户名)
选择c.ToList();
返回列表。FirstOrDefault();
}

这并不是对您问题的回答,在您的特定情况下,这并不重要,因为每个域名只有一个系统用户,但这是一种最佳做法

在LINQ语句上调用
ToList()
时,它将返回SQL数据库中与查询匹配的所有实体。然后调用
FirstOrDefault()
将返回第一个客户端


当只对其中一个感兴趣时,不要调用
ToList()
,而是调用
FirstOrDefault()
。这实际上会将
Top 1
添加到select查询中。这将减少在SQL server、CRM Web服务器上消耗的资源,并减少在SQL server、CRM Web服务器和客户端之间传输的数据。

这并不是您问题的答案,在您的特定实例中,这真的不重要,因为每个域名只有一个系统用户,但这是一种最佳实践

在LINQ语句上调用
ToList()
时,它将返回SQL数据库中与查询匹配的所有实体。然后调用
FirstOrDefault()
将返回第一个客户端


当只对其中一个感兴趣时,不要调用
ToList()
,而是调用
FirstOrDefault()
。这实际上会将
Top 1
添加到select查询中。这将减少SQL server、CRM Web服务器上消耗的资源,以及SQL server、CRM Web服务器和客户端之间传输的数据。

重新创建应用程序似乎可以解决此问题。仍然没有代码差异,因此仍然不确定发生了什么。

重新创建应用程序似乎可以解决问题。仍然没有代码差异,因此仍然不确定发生了什么。

尝试运行此方法(或其规范等效方法),看看是否有任何结果。如果是这样,则可以在Select语句中收紧条件

publicstaticsystemuser LookUpSystemUser()
{
返回Context.CreateQuery()
.Select(元素=>true)
.FirstOrDefault();
}
请记住,默认值(SystemUser)将生成null

不在计算机上,没有测试过。

试着运行这个方法(或它的标准等效方法),看看你是否得到了什么。如果是这样,则可以在Select语句中收紧条件

publicstaticsystemuser LookUpSystemUser()
{
返回Context.CreateQuery()
.Select(元素=>true)
.FirstOrDefault();
}
请记住,默认值(SystemUser)将生成null


不在计算机上,没有测试过。

如果删除
,在哪里
会得到任何结果?另一个选择是在CRM中找到您想找到的用户,并根据其Guid检索该用户,并检查其域名,以了解为什么找不到该用户。您的案例正确吗?如果删除
,您可以尝试使用c.DomainName.Equals(username,stringcomparison.ignorecase),其中
是否有任何结果?另一个选项是在CRM中查找您想要查找的用户,并根据其Guid检索该用户,并检查其域名,以查看未找到该用户的原因。您的案例正确吗?您可以尝试c.DomainName.Equals(username,stringcomparison.ignorecase)您是否更改了数据库排序规则?不同的排序规则可能会导致区分大小写的更改,从而得到不同的结果。您是否碰巧更改了数据库排序规则?不同的排序规则可能会导致区分大小写的更改,从而得到不同的结果。
 public static SystemUser LookUpSystemUser()
    {
        var username= "domain\\testuser");

        var list = (from c in Context.CreateQuery<SystemUser>()
                    where c.DomainName.Equals(username)
                    select c).ToList();

        return list.FirstOrDefault();
    }