2

.Containsいろいろ読んだ後、SDK Linq プロバイダーを使用して CRM 2011 にクエリを実行するときに、このメソッドを使用できないことがわかりました。アプリケーションから渡される Guid のコレクションに属するレコードを照会する必要があるため、これは問題です。さらに調査した結果、LinqKit と Predicate Builder を発見しました。すごい!クエリで単一のエンティティセットを使用すると、述語は正常に機能します。

var visits = Context.Crm_scheduled_visitSet.AsExpandable().Where(predicate);

私が抱えている問題は、クエリを拡張して別のエンティティセットへの結合を含めると、述語を含めるとクエリを実行できないことです。これは正常に実行される述語のないクエリですがCrm_scheduled_visitSet、Guid のコレクションでフィルター処理する必要があります。

var scores = Context.Crm_scheduled_visitSet
    .Join(Context.crm_business_risk_scoreSet, v => v.Crm_scheduled_visitId.Value, s => s.crm_business_risk_score_id.Id, (v, s) => new
    {
        OrgID = v.Crm_client_id.Id,
        VisitStartdate = object.Equals(null, v.crm_actual_start_date) ? new DateTime() : v.crm_actual_start_date.Value,
        SectionId = s.crm_business_risk_section_id.Id,
        RisLevelId = s.crm_business_risk_level_id.Id,
        RiskRatingId = s.crm_business_risk_rating_id.Id
    });

私がしなければならないことですが、これは実行されません:

var scores = base.Context.Crm_scheduled_visitSet.AsExpandable().Where(predicate)
    .Join(base.Context.crm_business_risk_scoreSet, v => v.Crm_scheduled_visitId.Value, s => s.crm_business_risk_score_id.Id, (v, s) => new
    {
        OrgID = v.Crm_client_id.Id,
        VisitStartdate = object.Equals(null, v.crm_actual_start_date) ? new DateTime() : v.crm_actual_start_date.Value,
        SectionId = s.crm_business_risk_section_id.Id,
        RisLevelId = s.crm_business_risk_level_id.Id,
        RiskRatingId = s.crm_business_risk_rating_id.Id
    });
4

2 に答える 2

1

クエリ式を使用することに頼って、これを機能させることができませんでした。CRM sdk Linq プロバイダーが将来的に改善され、Linq to Entities が提供する機能とより一致するようになることを願っています。

于 2013-02-04T12:02:51.447 に答える
0

良い。最初に訪問を単独で取得し、他のエンティティと結合できますが、別のエンティティと結合できます

コーディング方法は以下の通り。

var visits = Context.Crm_scheduled_visitSet.AsExpandable().Where(predicate);

var scores = from v in visits join r in Context.crm_business_risk_scoreSet
             on v.Crm_scheduled_visitId.Value equals r.crm_business_risk_score_id.Id
         select new {};

注 : 結合には必ず「等しい」という単語を使用し、この演算子「=」は使用しないでください。

試してみて、あなたのフィードバックを待っています!

于 2013-01-30T21:06:34.017 に答える