Plugins 如果FetchXML(聚合和)查询没有返回';我什么也没找到?

Plugins 如果FetchXML(聚合和)查询没有返回';我什么也没找到?,plugins,dynamics-crm,microsoft-dynamics,fetchxml,Plugins,Dynamics Crm,Microsoft Dynamics,Fetchxml,我正在运行一个FetchXML查询(对于fetch,aggregate='true',对于所有属性,aggregate='sum'),并在我的C#插件代码中将其传递给RetreiveMultiple。如果Fetchxml没有找到任何内容,service.RetrieveMultiple在这种情况下检索什么在调试器中,存在NullReference异常 FetchXML Builder返回以下内容: 我需要处理一个案件,合同中的一顿饭不见了。。。在我的插件中,我有三个Fetchxml表达式,它们

我正在运行一个FetchXML查询(对于fetch,aggregate='true',对于所有属性,aggregate='sum'),并在我的C#插件代码中将其传递给RetreiveMultiple。如果Fetchxml没有找到任何内容,service.RetrieveMultiple在这种情况下检索什么在调试器中,存在NullReference异常

FetchXML Builder返回以下内容:

我需要处理一个案件,合同中的一顿饭不见了。。。在我的插件中,我有三个Fetchxml表达式,它们从contract lines实体检索数据(一天中每顿饭一个,AM零食/午餐/PM零食)。如果其中一个FetchXMl实体没有要检索的数据,则插件根本不会生成任何内容。。。即使其中一个FetchXML查询返回了一些结果。。只要没有从三个FETCHXML查询中的任何一个返回的数据,我就只想把零放在这里请注意,如果我将所有三餐都包括在合同行中,插件工作正常这是我的代码:

试试看
{
//合同生效日期
DateTime startDate=(DateTime)前映像[“activeon”];
//获取合同结束日期
DateTime endDate=(DateTime)前映像[“expireson”];
//创建range类的实例
Eachday范围=新的Eachday();
//使用range类的Weekday方法获取工作日列表
var weekdays=范围。WeekDay(开始日期、结束日期);
//获取合同号
字符串contractNumber=(字符串)前映像[“contractNumber”];
//获取单位订单查找Id
EntityReference unitOrder=(EntityReference)PreImage.Attributes[“new_unitorderid”];
var unitOrderId=unitOrder.Id;
//查询并汇总每个工作日3个不同用餐时间的订单。。。
//AM FetchXML查询..字符串被传递给service.RetrieveMultiple();
字符串unitsum_am=@”

第190行还引发了一个异常:


它将返回一个完全限定的
EntityCollection
,但是
Entities
属性在集合中没有记录。

既不为null也不为空

您可以使用以下代码段来标识结果集:

if (unitsum_am_result.Entities.Count == 0)
{
    am_list.AddRange(Enumerable.Repeat(0, 5));
}
else
{
    //foreach....
}

实体集合实际上返回了一个完全限定的EntityCollection,实体计数将为零。但是,似乎在使用聚合“和”时,如果集合为空,则平台会抛出一个错误。“计数”不会发生这种情况。为了修复它,我做了以下操作:

//遍历所有记录并获取每天的总和
//将总数放入am_列表中
foreach(单位总和中的var单位)
{
尝试
{
am_list.Add((int)((别名值)unit[“new_mondayunits_amsum”].Value));
am_list.Add((int)((AliasedValue)unit[“new_tuesdayunits_amsum”).Value));
am_list.Add((int)(别名值)unit[“new_unitswednesday_amsum”]).Value));
am_list.Add((int)((别名值)unit[“new_unitsthursday_amsum”]).Value));
am_list.Add((int)((AliasedValue)unit[“new_unitsfriday_amsum”]).Value));
}
抓住
{
am_list.AddRange(可枚举.重复(0,5));
}
}

当我尝试此操作时,if语句不会执行..即使fetchxml查询没有要返回的记录。如果没有返回记录,我希望am_列表有五个零!@AlanJudi该代码正是我当前项目中使用的代码。当你说“不工作”时,意味着抛出错误或不满足你的需要?你调试了吗?已经有人在这篇问答文章中开始投反对票了:(调试显示System.NullReferenceException:对象引用未设置为对象的实例!请看我上面所附的图片!@AlanJudi您说过unitsum\u午餐\u结果检查将在else语句中进行,那么在此之前执行的unitsum\u am\u结果呢?