将方法从Dictionary更改为Struct

时间:2015-07-23 11:05:11

标签: c# linq dictionary

我有以下方法,我使用Dictionary设置两个值nl。 ID 名称 / keyvalue。现在我明白了一个词典只能取 两个 值,但我需要的是改变我的方法,以便我可以允许更多的值添加到我的Type中。最好的方法是什么?

public Dictionary<int, string> GetQuoteOptionList(QuoteOptionType optionType)
{
    Dictionary<int, string> result = new Dictionary<int, string>();

    using (TruckDb db = new TruckDb())
    {
        switch (optionType)
        {
            case QuoteOptionType.BodyType:
                db.BodyTypes.ToList().ForEach(x => result.Add(x.Id, x.Name));
                break;
                ...
            case QuoteOptionType.RearDropSide:
                db.RearDropSides.ToList().ForEach(x => result.Add(x.Id, x.Name));
                break;
            case QuoteOptionType.Extras://Example: (x.Id, x.Description, x.StockItem, x.MinimumStock) I would like to add more than just two values    
                db.Extras.ToList().ForEach(x => result.Add(x.Id, x.Description));
                    break;
                default:
                    throw new ArgumentException("The option that was selected does not have a corresponding list.");
            }
        }
        return result;
    }

我的代码中有一个关于我想要更改的示例,我在上面发布了它,只需检查case QuoteOptionType.Extras:

提前感谢您的任何帮助或建议! :)

2 个答案:

答案 0 :(得分:2)

创建一个这样的类:

public class yourClass
{
    public string ID { get; set; }
    public string Description { get; set; }
    public string StockItem { get; set; }
    public string MinimumStock { get; set; }
}

List<yourClass> result = new List<yourClass>();
db.Extras.ToList().ForEach(c => result.Add(new yourClass { ID="id" , Description="desc" , MinimumStock="minimum" , StockItem="stock" }));

答案 1 :(得分:1)

要使用的结构选择,词典,列表,...不依赖于您要存储的数据,但取决于您对插入,搜索,排序等的约束。 如果你使用字典,我想你需要快速回收项目。您可以继续使用字典,只需将字符串中的值类型替换为新类:

public class NewClass
{
    public string Id{ get; set; }
    public string Description { get; set; }
    //......
}
db.Extras.ToList().ForEach(c => result.Add(x.Id, new NewClass(x.Id/*other field*/));