3

我正在使用 Microsoft Dynamics CRM 2011 和 ADX Studios。在其中一个页面上,我正在尝试制作一个显示用户当前潜在客户数量的小部件。我想做一个 LINQ 查询,选择 CRM 数据库中潜在客户实体的所有者等于当前用户的潜在客户计数。我是 LINQ 的新手,所以我仍在尝试掌握查询的语义。到目前为止,我的代码如下所示,它吸引了所有潜在客户。我不太确定如何在“where”子句中工作,以检查所有者 ID 是否等于当前用户的 ID。

count = context.LeadSet.ToList().Count();
4

4 回答 4

6

看到这个答案

Linq to CRM 不支持任何聚合表达式,因此从性能角度来看,使用 Fetch XML 会更好。

于 2013-10-28T19:15:45.193 回答
0

主要问题之一是查询还必须包括潜在客户的所有者。这是添加到 crm 的自定义字段。因此,ADX Studios 使用的 XRM 文件必须使用 CrmSvcUtil 重新构建。我使用了以下批处理文件,可以根据您的项目进行更改:

cd\"Program Files (x86)\Adxstudio\XrmPortals\6.0.0009\Framework"

CrmSvcUtil.exe /codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration" /url:https://contoso.com/XRMServices/2011/Organization.svc /username:user /password:password /out:"C:\Xrm.cs" /namespace:Xrm /servicecontextprefix:Xrm /servicecontextname:XrmServiceContext

pause

这必须以管理员身份运行才能完成新 XRM 文件的制作。然后必须将该文件复制并粘贴到 ADX Studio 解决方案中。重建解决方案,您的自定义字段现在将在您进行查询时被智能感知使用。

var context = new XrmServiceContext();
var leadList = (from a in context.LeadSet
                       where a.customFieldOwnerId.Id == Id
                       select a).ToList().Count();
                   int count = leadList;

要在使用 Microsoft Dynamics CRM 时获得计数,您必须在 .Count ()之前使用.ToList ()。这似乎是多余的,但如果你不这样做,你会得到一个错误。

于 2013-12-19T16:25:50.090 回答
-1

我不确定你的数据结构,LeadSet但我想像:

context.LeadSet.Count(ls => ls.OwnerID == ownerId);

OwnerId上面这会拉出等于您的参数的所有潜在客户的计数ownerId

如果您想要匹配的对象,只需使用.Where代替.Count

于 2013-10-28T17:53:07.783 回答
-3

尝试使用 lambda 表达式

int count = context.LeadSet.Where(a=>a.currentUserName==currentUserName").Count();

或 linq 查询语法

int count=(from item in context.LeadSet.ToList()
           where item.currentUserName==currentUserName
           select item).count();
于 2013-10-28T17:56:01.483 回答