【发布时间】:2013-01-18 11:47:28
【问题描述】:
发生了一些奇怪的事情。
如果我这样做:
var allAccountsQuery = from acc in baseQ
where
//high potential check - 1, 2, 3
(acc.mcpl_potencjal_klienta == 1 || acc.mcpl_potencjal_klienta == 2 || acc.mcpl_potencjal_klienta == 3) &&
//directors block check
((acc.mcpl_blokada_dyrektorska == true && acc.mcpl_blokada_do <= date) || acc.mcpl_blokada_dyrektorska == false || acc.mcpl_blokada_dyrektorska == null) &&
//sack assign date check
(acc.mcpl_dataprzypisaniazworka == null || acc.mcpl_dataprzypisaniazworka < date) &&
//owner change check
(acc.mcpl_datazmianywasciciela == null || acc.mcpl_datazmianywasciciela < date) &&
//creation date check
//TODO:For testing!
//(acc.mcpl_data_utworzenia_test < date)
(acc.createdon < date)
select acc;
var joinQuery = from acc in allAccountsQuery
join opp in ctx.opportunityopportunities on acc.accountid equals opp.customerid.Value
select new
{
Account = acc,
Opportunity = opp
};
Plugins.Common.XrmHelper.ClearCache("account");
var joinResult = joinQuery.ToList();
然后我在执行这个查询时会得到一个未知的平台错误。我需要将整个where 子句从allAccountsQuery 复制粘贴到joinQuery 并再次使用baseQ,然后它就可以工作了。
这里发生了什么?我认为只要您不执行任何不受支持的操作,您就可以安全地加入 LINQ 查询。
PS。最奇怪的部分是粘贴的代码将在略有不同的where 条件下工作。
PPS。 baseQ 只是一个更简单的 where 查询,很像 allAccountsQuery。
【问题讨论】:
标签: c# linq dynamics-crm-4