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)

很有魅力。