比较crm id sdk早期绑定问题
本文关键字:绑定 问题 sdk crm id 比较 | 更新日期: 2023-09-27 18:17:16
我尝试将Linq中的2 Guid与Crm请求进行比较,但它不起作用。我不明白为什么:
Guid IdThematique = new Guid(ddlThematique);
Sollicitations = Sollicitations.Where(i => i.Sollicitation.SubjectId.Id == IdThematique);
这是捕获的:
系统。NullReferenceException: La ramexine d' object n'est pass damexineune实例d 'UN object。XXX . XXX . XXX 74 . comSystem.Linq.Enumerable.WhereListIterator
1.MoveNext() à System.Linq.Buffer
1..ctor(IEnumerable1 source) à System.Linq.OrderedEnumerable
1.d__0.MoveNext()System.Linq.Enumerable。Count[TSource](IEnumerable ' 1 source) xxx个数据xxx 200
谢谢
可能您有Subject未填充且i.Sollicitation.SubjectId
为空的记录。
从我的头顶,下面的东西应该使它工作:
Sollicitations.Where(i => (i.Sollicitation.SubjectId != null && i.Sollicitation.SubjectId.Id == IdThematique))
我同意Mario的观点,但我想让它成为一个扩展方法:
更简洁的版本:
public static class EntityReferenceExtensions{
public static Guid GetIdOrDefault(this EntityReference entity){
return (entity ?? new EntityReference()).Id;
}
}
更可读的版本:
public static class EntityReferenceExtensions{
public static Guid GetIdOrDefault(this EntityReference entity){
if(entity == null){
return Guid.Empty;
} else {
return entity.Id;
}
}
}
但是使用扩展方法,您可以处理任何实体对象的任何实体引用(早期或晚期绑定)
Sollicitations.Where(i => (i.Sollicitation.SubjectId.GetIdOrDefault() == IdThematique))
虽然现在我想了想,我不认为这适用于linq的CRM。
您正在将ddlThematique转换为Guid,我认为这是错误的。你需要使用ddlThematique的Text属性