基本的Linq加入了两个表的过滤器 - CRM 2011

时间:2012-08-27 10:21:39

标签: vb.net linq dynamics-crm dynamics-crm-2011

  

可能重复:
  Error within Where statement in LINQ

我需要获取自某个DateTime以来已更改的所有引号的列表(出于导出原因)。

当然,如果报价明细更改,那么即使报价本身没有改变,也应该导出报价。

我会在 T-SQL 中轻松解决这个问题:

Select q.QuoteNumber from quote q inner join quotedetails qd on q.quoteid = qs.quoteid
where ((q.lastmodified > ?1) or (qd.lastmodified > ?1)) and (qd.SomeField = 'OK')

然而,在Linq to CRM 2011中,我偶然发现了限制。

var quotelist = from q in xrm.quoteSet
join qd in xrm.quoteDetailSet
on q.QuoteId equals qd.QuoteId.Id
where (q.lastmodified > ?1 | qd.lastmodified > ?1) & qd.Somefield == "OK"

select q.QuoteNumber

它表示Quote实体没有属性SomeField。

仅供参考,这只是一个显示问题的示例查询。我无法在现实生活中查询Quote和QuoteDetail。

T-SQL 查询(按原样)转换为 Linq 查询 CRM 2011 的最简洁方法是什么?

2 个答案:

答案 0 :(得分:0)

你看过the MSDN samples了吗?当你的前缀引用QouteDetail( qd .Somefield)时,我很困惑你为什么在Quote实体上收到错误“no attribute”

唯一看起来可疑的是你的单身&和|在where子句中。我相信你应该把那些加倍:&&和||

答案 1 :(得分:0)

您是否有可能使用SomeField属性创建早期绑定对象,然后有人删除了该字段?