簡體   English   中英

如何通過c#檢索特定機會的所有機會產品?

[英]How to retrieve all Opportunity Products for the specific Opportunity through c#?

我有機會,如下圖所示:

子項目的機會

昨天,我發布了一個有關如何創建機會產品(汽車產品)的問題,而Dave為我提供了有關如何實現這一目標的答案

現在,我的要求已得到擴展,可以刪除這些現有的電機產品並添加新產品。

我正在考慮通過首先從此機會中檢索所有相關的汽車產品來做到這一點。

為了創建機會產品,我使用了以下代碼:

var opportunityProduct = new Entity(entityMotorName);
opportunityProduct["tmeic_opportunitymotorproductid"] = new EntityReference("opportunity", Guid("opportunityid"));
var opportunityProductId = crmService.Create(opportunityProduct);

但是,我一直在這里報廢這些電機產品。 一旦獲得了與此機會相關的電機產品,就可以使用以下查詢。

crmService.Delete(entityName,Guid);

注意:我的機會沒有機會ID,但沒有tmeic_opportunitymotorproductid,而我的汽車產品(機會產品)沒有機會ID,但具有tmeic_opportunitymotorproductid。

唯一的問題是如何檢索這些電機產品?

這是執行此操作的一種方法:

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Xrm.Tooling.Connector;
using System;
using System.Collections.Generic;
using System.Linq;

class App
{
    private IOrganizationService svc;

    public App(IOrganizationService svc)
    {
        this.svc = svc;
    }

    public void Run()
    {
        var list = OppProducts(svc, new Guid("628CF01A-AED1-E411-80EF-C4346BAC7BE8"));
        DeleteList(svc, list);
    }

    public List<Entity> OppProducts(IOrganizationService svc, Guid OppId)
    {
        var query = new QueryExpression
        {
            EntityName = "opportunityproduct",
            ColumnSet = new ColumnSet("tmeic_opportunitymotorproductid", "opportunityproductid"),
            Criteria = new FilterExpression
            {
                FilterOperator = LogicalOperator.And,
                Conditions =
                {
                    new ConditionExpression
                    {
                        AttributeName = "tmeic_opportunitymotorproductid",
                        Operator = ConditionOperator.Equal,
                        Values = { OppId }
                    }   
                }
            }
        };

        var result = svc.RetrieveMultiple(query);

        return result.Entities.ToList();
    }

    public void DeleteList(IOrganizationService svc, List<Entity> list)
    {
        list.ForEach(e => svc.Delete(e.LogicalName, e.Id));
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM