能够拉出包含List<>的字典的值

时间:2017-02-20 16:33:54

标签: list dictionary

这是我的字典数据类型:

private Dictionary<String, List<PriceAndStandard>>

PriceAndStandard是一个结构:

struct PriceAndStandard
{
  public double mePrice;
   public int? 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;

更新 似乎option存在问题,因为这是一个字符串,与我的字典列表中的值不兼容。

更新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("$", ""));

&#39;列表&#39;不包含&#39; mePrice&#39;的定义没有延伸方法&#39; mePrice&#39;接受类型&#39; List&#39;

的第一个参数

1 个答案:

答案 0 :(得分:0)

尝试:

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

编辑: 我的第一个答案是错误的,抱歉。字典中的值是列表。因此,当您检索值(这是PriceAndStandard对象的列表)时,您需要使用该列表或在列表中查找特定的PriceAndStandard对象以进行操作。在我展示的示例中,我使用first()方法查找列表中的第一个对象。您可能想要阅读LINQ并使用where()方法或类似的东西。

我不确定你要完成什么...你确定你想要你的词典中的值是列表吗?这没有什么不对,除了它有点不寻常。也许你在想这个?:

private Dictionary<String, PriceAndStandard>

0m也是十进制,0d是double。我的坏。