奇怪的事情正在发生。
如果我这样做:
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
条件下工作。
聚苯乙烯。baseQ
只是一个更简单的where
查询,就像allAccountsQuery
.