Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当数据不为空时,Linq查询返回空值_C#_Linq_Dynamics Crm 2011 - Fatal编程技术网

C# 当数据不为空时,Linq查询返回空值

C# 当数据不为空时,Linq查询返回空值,c#,linq,dynamics-crm-2011,C#,Linq,Dynamics Crm 2011,我有一个Linq查询,我正在使用它处理一些奇怪的结果。查询返回时,其中一项为null,但数据库中的数据不是null public void LookUpSomeInfoFromContractDetail(WorkflowHelper workflowHelper, String contractDetailId) { try { Guid _contractDetailId = workflowHelper.GuidChange

我有一个Linq查询,我正在使用它处理一些奇怪的结果。查询返回时,其中一项为null,但数据库中的数据不是null

 public void LookUpSomeInfoFromContractDetail(WorkflowHelper workflowHelper, String contractDetailId)
    {
        try
        {
            Guid _contractDetailId = workflowHelper.GuidChanger(contractDetailId);


            workflowHelper.serviceContext.ClearChanges();
            var contactDetailQuery = from ctd in workflowHelper.serviceContext.ContractDetailSet
                               where ctd.ContractDetailId.Equals(_contractDetailId)
                               select new { ctd.Title, ctd.ContractId, ctd.ContactId};
            foreach (var c in contactDetailQuery)
            {
                //logic here

            }
        }
        catch (Exception ex)
        {
            //catch stuff here
        }
    }
问题是ctd.ContactId值返回为null。但是,如果我在SQL中查看同一条记录,则该值不为null

有什么想法吗

在Millie Smith的评论之后,我再次查看了SQL和Linq,发现了一些有趣的东西:

在SQL中,我发现有一个值等于我要查找的值:

select 
ctd.ContactId
,ctd.CustomerId
from ContractDetail ctd
where ctd.CustomerId = ctd.ContactId
返回与以下相同数量的结果:

select 
ctd.ContactId
,ctd.CustomerId
from ContractDetail ctd

仍然不明白为什么在Linq中没有显示ctd.ContactId,为什么不选择ctd并手动检查返回的对象中的值。看看你得到了什么。workflowHelper.serviceContext.ContractDetailSet可能没有正确返回对象。@MillieSmith我选择了所有ctd它仍然为空;由于某种原因,特定项在我的linq查询中显示为null;虽然SQL中的同一项ContactId显示了一个值。但您确定workflowHelper.serviceContext.ContractDetailSet在ContactId属性中返回了正确的值吗?我认为问题在于当您从数据库中提取数据时,而不是通过linq运行数据时。workflowHelper.serviceContext是我正在使用的上下文,我在另一个类中设置了它,并且我正在从ContractDetailSet提取数据。当我只查询CTD对象时,它显示ContactID的值为null。其他值在整个CTD对象中显示正确。如果我没有从数据库中获得正确的数据,而不是从linq中获得正确的数据,我该如何判断?在C中使用SQL连接设置同一查询的同事也返回了null,尽管她的检查表明该记录在实际数据库中也不是null。只有当我们通过C调用它时,它才显示为null;contractDetail{Console.writelineec.ContactID;}中的foreach var c我猜ContactID仍然是空的。我不知道ContractDetailSet正在访问什么,但这可能是问题所在,而不是Linq查询。