How to handle join when the EntityReference is null. For example
var info = (from cr in xrm.CreateQuery<new_course>()
join c in xrm.CreateQuery<Contact>()
on cr.course_contact.Id equals c.ContactId
where c.Id == courseGuid
select cr.title).FirstOrDefault();
when course_contact is null C# throws null exception
Microsoft.Crm.CrmArgumentNullException: attributeName ---> Microsoft.Crm.CrmArgumentNullException: attributeName ---> System.ArgumentNullException: Value cannot be null.
Parameter name: attributeName
--- End of inner exception stack trace ---
at Microsoft.Crm.Metadata.EntityMetadata.TryGetAttribute(String attributeName, NameMappingType mapping)
at Microsoft.Crm.Metadata.EntityMetadata.GetAttribute(String attributeName, NameMappingType mapping)
at Microsoft.Crm.Query.EntityExpression.FromSdkQueryVisitor.Visit(ConditionExpression condition)
at Microsoft.Crm.Query.EntityExpression.FromSdkQueryVisitor.Visit(FilterExpression filter)
at Microsoft.Crm.Query.EntityExpression.FromSdkQueryVisitor.Visit(QueryExpression query)
at Microsoft.Crm.Query.EntityExpression.InitializeFromQuery(QueryBase query)
at Microsoft.Crm.Query.EntityExpression.Converter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at Microsoft.Crm.BusinessEntities.ConversionHelpers.Convert(ICrmConversionContext conversionContext, Object source, Type destinationType)
at Microsoft.Crm.Extensibility.DictionaryMapper.Map(ParameterCollection inputs, ICrmConversionContext context)
at Microsoft.Crm.Extensibility.InternalOperationPlugin.Execute(IServiceProvider serviceProvider)
at Microsoft.Crm.Extensibility.V5PluginProxyStep.ExecuteInternal(PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
--- End of inner exception stack trace ---
at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.PipelineInstrumentationHelper.Execute(Boolean instrumentationEnabled, String stopwatchName, ExecuteWithInstrumentation action, PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.Pipeline.<>c__DisplayClass2_1.<Execute>b__0()