Создание метода - PullRequest
       8

Создание метода

1 голос
/ 23 декабря 2011

У меня есть несколько таких экземпляров, которые мне нужно вызвать для извлечения данных с сервера crm.

RetrieveAttributeRequest request = new RetrieveAttributeRequest();
request.EntityLogicalName = "opportunity";
request.LogicalName = "new_businessunit";
RetrieveAttributeResponse response = (RetrieveAttributeResponse)lService.Execute(request);
PicklistAttributeMetadata picklist = (PicklistAttributeMetadata)response.AttributeMetadata;

RetrieveAttributeRequest requestsource = new RetrieveAttributeRequest();
requestsource.EntityLogicalName = "opportunity";
requestsource.LogicalName = "new_sourcepick";
RetrieveAttributeResponse responsesource = (RetrieveAttributeResponse)lService.Execute(requestsource);
PicklistAttributeMetadata picklistsource = (PicklistAttributeMetadata)responsesource.AttributeMetadata;

Dictionary<int?, string> BusinessUnits = new Dictionary<int?, string>();
foreach (OptionMetadata option in picklist.OptionSet.Options)
    {
        string picklistlabel = option.Label.UserLocalizedLabel.Label.ToString();
        businessid = option.Value;
        BusinessUnits.Add(businessid, picklistlabel);
    }
Dictionary<int?, string> MarketSegment = new Dictionary<int?, string>();
foreach (OptionMetadata option in picklistmarket.OptionSet.Options)
    {
        string picklistlabel = option.Label.UserLocalizedLabel.Label.ToString();
        marketid = option.Value;
        MarketSegment.Add(marketid, picklistlabel);
    }

Так что в основном я опускаю данные и затем строю словарь для хранения данных.У меня их много, поэтому я хотел бы создать метод, в котором я просто передаю EntityLogialName и LogicalName.Поэтому вместо того, чтобы иметь все это, я мог бы сделать что-то вроде:

loadlist (Properiuty, New_businessunit)

Но я не совсем уверен, как сделать метод для обработки этого.Любые идеи о том, как я бы сделал метод?

Спасибо!

Ответы [ 2 ]

1 голос
/ 23 декабря 2011
public IDictionary<int?, string> LoadFromCRM(string entityName, string logicalName)
{
    var request = new RetrieveAttributeRequest();
    request.EntityLogicalName = entityName;
    request.LogicalName = logicalName;
    var response = (RetrieveAttributeResponse)lService.Execute(request);
    var picklist = (PicklistAttributeMetadata)response.AttributeMetadata;

    return picklist.OptionSet.Options.ToDictionary(o => o.Value, o => o.Label.UserLocalizedLabel.Label.ToString());
}

// Usage
var businessUnits = LoadFromCRM("opportunity", "new_businessunit");
var marketSegment = LoadFromCRM("opportunity", "new_sourcepick");

Инкапсулируйте загрузку любых данных в методе и вызовите его дважды (один раз для каждого интересующего вас набора данных).Выше используется LINQ для перевода Options в Dictionary с использованием метода расширения ToDictionary.

0 голосов
/ 23 декабря 2011

Вы можете создать метод расширения:

public static class PicklistAttributeMetadataExtensions
{
public static Dictionary<int?,string> ToDictionary(this PicklistAttributeMetadata picklist)
{
  return picklist.OptionSet.Options.ToDictionary(x => x.Value, x => option.Label.UserLocalizedLabel.Label.ToString());
}    
}

Используется так:

PicklistAttributeMetadata picklist = /// get pick list
var dictionary = picklist.ToDictionary();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...