Linq where 子句无效
Linq where clause invalid
var advocacy = (from c in svcContext.CreateQuery("lead")
join a in svcContext.CreateQuery("product")
on c["transactioncurrencyid"] equals a["transactioncurrencyid"]
where a["capg_billingtimeframe"].Equals(126350000)
select new
{
dues = c["capg_calculatedduesbilling"],
product = c["capg_primaryproduct"],
listprice = a["price"],
eligibility = c.FormattedValues["capg_eligibility"]
});
那是我的 linq 查询,它给我错误:'where' 条件无效。实体成员正在调用无效的 属性 或方法。
我在网上到处看了,做了他们的建议。我没有使用 Xrm.cs 因为后期绑定可以更快。我试过使用 == 操作数,我试过 (int) 和 Convert.ToInt32(a["capg_billingtimeframe"]) 甚至将所有内容都转换为字符串。我会说我知道的 ["capg_billingtimeframe"] 是一个对象(这就是我进行这些转换的原因。
我根据那个整数猜测 capg_billingtimeframe 是一个选项集。如果是,则需要这样转换:
where ((OptionSetValue)a["capg_billingtimeframe"]).Value == 126350000
我使用了 early bound 并为了获取本地我写道:
OptionSetValue branch = this.InputTargetEntity.Attributes.Contains("capg_calculatorutilized") ? (OptionSetValue)this.InputTargetEntity["capg_calculatorutilized"] : (OptionSetValue)this.TargetPreImage["capg_calculatorutilized"];
然后我不得不使用 crmsvcutil 获取 Optionsets.cs 并编写:
if (branch.Value == (int)capg_calculatorrequired.SectionA)
很有魅力。
var advocacy = (from c in svcContext.CreateQuery("lead")
join a in svcContext.CreateQuery("product")
on c["transactioncurrencyid"] equals a["transactioncurrencyid"]
where a["capg_billingtimeframe"].Equals(126350000)
select new
{
dues = c["capg_calculatedduesbilling"],
product = c["capg_primaryproduct"],
listprice = a["price"],
eligibility = c.FormattedValues["capg_eligibility"]
});
那是我的 linq 查询,它给我错误:'where' 条件无效。实体成员正在调用无效的 属性 或方法。
我在网上到处看了,做了他们的建议。我没有使用 Xrm.cs 因为后期绑定可以更快。我试过使用 == 操作数,我试过 (int) 和 Convert.ToInt32(a["capg_billingtimeframe"]) 甚至将所有内容都转换为字符串。我会说我知道的 ["capg_billingtimeframe"] 是一个对象(这就是我进行这些转换的原因。
我根据那个整数猜测 capg_billingtimeframe 是一个选项集。如果是,则需要这样转换:
where ((OptionSetValue)a["capg_billingtimeframe"]).Value == 126350000
我使用了 early bound 并为了获取本地我写道:
OptionSetValue branch = this.InputTargetEntity.Attributes.Contains("capg_calculatorutilized") ? (OptionSetValue)this.InputTargetEntity["capg_calculatorutilized"] : (OptionSetValue)this.TargetPreImage["capg_calculatorutilized"];
然后我不得不使用 crmsvcutil 获取 Optionsets.cs 并编写:
if (branch.Value == (int)capg_calculatorrequired.SectionA)
很有魅力。