在LINQ Where语句中的错误(Error within Where statement in

2019-06-24 23:42发布

出于某种原因,在我的地方说,“名字”并不在实体机会存在。 但是,它被设置为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"]
                             });

Answer 1:

确保你把每个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"]
                };


Answer 2:

定义你的参考机遇实体“R”但试图读取“U”姓

from r in gServiceContext.CreateQuery("opportunity")

u["firstname"]

更改结束你在哪里

r["firstname"].Equals(rsmFirstName)


文章来源: Error within Where statement in LINQ