8

出于某种原因,在我的地方它说机会实体中不存在“名字”。但它是为 SystemUser 实体设置的。知道为什么会感到困惑吗?谢谢!

            var linqQuery = (from r in gServiceContext.CreateQuery("opportunity")
                             join c in gServiceContext.CreateQuery("account") on ((EntityReference)r["accountid"]).Id equals c["accountid"]
                             join u in gServiceContext.CreateQuery("systemuser") on ((EntityReference)r["ownerid"]).Id equals u["systemuserid"]
                             where r["new_leadstatus"].Equals("100000004") && u["lastname"].Equals(rsmLastName) && u["firstname"].Equals(rsmFirstName)
                             select new
                             {
                                 AccountId = !r.Contains("accountid") ? string.Empty : r["accountid"],
                                 Account = !r.Contains("name") ? string.Empty : r["name"]
                             });
4

2 回答 2

11

确保根据 Microsoft 指南将每个where子句放在单独的行中。

where子句对结果应用过滤器,通常使用布尔表达式。过滤器指定要从源序列中排除的元素。每个where子句只能包含针对单个实体类型的条件。涉及多个实体的复合条件无效。相反,应该在单独的where子句中过滤每个实体。

var linqQuery = from r in gServiceContext.CreateQuery("opportunity")
                join c in gServiceContext.CreateQuery("account") on ((EntityReference)r["accountid"]).Id equals c["accountid"]
                join u in gServiceContext.CreateQuery("systemuser") on ((EntityReference)r["ownerid"]).Id equals u["systemuserid"]
                where r["new_leadstatus"].Equals("100000004")
                where u["lastname"].Equals(rsmLastName) && u["firstname"].Equals(rsmFirstName)
                select new
                {
                    AccountId = !r.Contains("accountid") ? string.Empty : r["accountid"],
                    Account = !r.Contains("name") ? string.Empty : r["name"]
                };
于 2012-05-30T17:20:21.233 回答
2

您将对机会实体的引用定义为“r”,但尝试从“u”中读取名字

from r in gServiceContext.CreateQuery("opportunity")

u["firstname"]

改变你的终点在哪里

r["firstname"].Equals(rsmFirstName)
于 2012-05-30T16:51:43.147 回答