2017-02-20 6 views
0

Вот мой словарь Тип данных:Будучи в состоянии вывести значение словаря содержащих List <>

private Dictionary<String, List<PriceAndStandard>> 

PriceAndStandard является структурой:

struct PriceAndStandard 
{ 
    public double mePrice; 
    public int? meStandard; 
} 

Я хочу, чтобы иметь возможность захватить mePrice и meStandard для каждый пункт.

Ошибка Я ПОЛУЧАТЬ

Type of conditional expression cannot be determined because there is no implicit conversion between 'System.Collections.Generic.List<AspDotNetStorefront.showproduct.PriceAndStandard> 

я смог бы захватить значение, если оно было основным кнопочная строковое значение пары с:

shaftModelDictionary.Values.ToList(); 

Но поскольку у меня есть список, который я действительно необходимо сгладить данные, чтобы их можно было сохранить.

Рабочий код:

  foreach (string option in product.AvailableClubOptions.ShaftModel) 
      { 
       string shaftModelText = option; 
       if (minPriceForShaftMaterial > 0 && !string.IsNullOrEmpty(option)) 
       { 
        List<PriceAndStandard> Paul = shaftModelDictionary.Keys.ToList(); 
        double priceForShaftModel = shaftModelDictionary.[option]; 
        double priceForSelectedShaftModel = !String.IsNullOrEmpty(shaftModel) ? shaftModelDictionary[shaftModel] : 0; 

Update: Похоже, что проблема с option, так что это строка, а не совместимы с значениями в моем словаре быть списки.

Update 2:

foreach (string option in product.AvailableClubOptions.ShaftModel) 
        { 
         string shaftModelText = option; 
         if (minPriceForShaftMaterial > 0 && !string.IsNullOrEmpty(option)) 
         { 
          double priceForShaftModel = shaftModelDictionary[option].mePrice; 
          double priceForSelectedShaftModel = !String.IsNullOrEmpty(shaftModel) ? shaftModelDictionary[shaftModel].mePrice : 0m; 
          double priceDelta = 0.0d; 
          double MinimumPrice = Convert.ToDouble(ltOurPrice.InnerText.Replace("$", "")); 

'Список' не содержит определение для 'mePrice' и нет методы расширения 'mePrice' принимать первый аргумент типа 'Список'

ответ

0

попробовать:

double priceForSelectedShaftModel = !String.IsNullOrEmpty(shaftModel) ? shaftModelDictionary[shaftModel].first().mePrice : 0d; 

Edit: Мой первый ответ был неверным, извините. Значения в вашем словаре - это списки. Поэтому, когда вы извлекаете значение (которое является списком объектов PriceAndStandard), вам нужно либо работать с этим списком, либо найти конкретный объект PriceAndStandard в списке для работы. В показанном примере я использую метод first() для поиска первого объекта в списке. Вы можете читать LINQ и использовать метод where() или что-то подобное.

Я не уверен, что вы пытаетесь выполнить ... вы уверены, что хотите, чтобы значения в вашем dict были списками? В этом нет ничего плохого, но это немного необычно. Возможно, вы об этом подумали ?:

private Dictionary<String, PriceAndStandard> 

Также 0m является десятичным, 0d - двойным. Виноват.

+0

Первая красная линия swigely находится под двойной ценойForShaftModel = валModelDictionary [опция] – user1869407

+0

См. Мое редактирование - добавлено «м» в самом конце. – Sam

+0

проверить обновление 2. mePrice имеет подчеркнутый swigley в моей среде IDE в обоих местах, где они происходят – user1869407