c# - 如何减轻在 C# 中初始化列表字典的痛苦?

标签 c# .net .net-3.5 collections

我碰巧经常使用这种结构:

Dictionary<string, List<string>> Foo = new Dictionary<string, List<string>>();

这导致了这种代码:

foreach (DataRow dr in ds.Tables[0].Rows)
{
    List<string> bar;
    if (!Foo.TryGetValue(dr["Key"].ToString(), out desks))
    {
        bar= new List<string>();
        Foo.Add(dr["Key"].ToString(), bar);
    }
    bar.Add(dr["Value"].ToString());
}

您认为是否值得编写一个自动处理此类事情的自定义 DictionaryOfList 类?

还有其他方法可以延迟初始化这些列表吗?

最佳答案

您可以编写扩展方法 - GetValueOrCreateDefault() 或类似的方法:

foreach (DataRow dr in ds.Tables[0].Rows)
{
    Foo.GetValueOrCreateDefault( dr["Key"] ).Add( dr["Value"].ToString() )
}

也许您甚至可以为整个初始化编写一个扩展方法?

关于c# - 如何减轻在 C# 中初始化列表字典的痛苦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/867785/

相关文章:

c# - 如何在 IIS 上运行自托管(基于owin)Web api?

c# - 发布 Azure Webjob 时缺少程序集 CS0234 WebJobs、CS0246 QueueTriggerAttributes

C# .NET 2 Threading.Timer - 时间漂移

c# - 代理-服务器拓扑的服务器推送与客户端拉取

c# - .NET DLL 冲突

c# - 检查数值精度和小数位数的有效方法是什么?

c# - 请求的集合成员不存在,MS Word

c# - Func<T, TResult> 用于无效 TResult?

.net - 在.net c++托管代码下使用STL是不可能的吗?

javascript - 错误 - 类型 'System.Web.UI.ScriptManager' 没有名为 'CompositeScript' 的公共(public)属性