何か奇妙なことが起こっています。
私がこれを行う場合:
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
WHOLE句を からallAccountsQuery
にコピーして貼り付け、再度joinQuery
使用する必要があります。baseQ
何が起きてる?サポートされていない操作を行わない限り、LINQ クエリに安全に参加できると思いました。
PS。最も奇妙な部分は、貼り付けられたコードがわずかに異なるwhere
条件で機能することです。
PPS。baseQ
によく似た、さらに単純なwhere
クエリallAccountsQuery
です。