字典的匿名集合初始值设定项

aba*_*hev 10 .net c# dictionary anonymous-types collection-initializer

可以隐式声明下一个Dictionary<HyperLink, Anonymous>:

{ urlA, new { Text = "TextA", Url = "UrlA" } },
{ urlB, new { Text = "TextB", Url = "UrlB" } }
Run Code Online (Sandbox Code Playgroud)

所以我可以这样使用它:

foreach (var k in dic)
{
   k.Key.Text = k.Value.Text;
   k.Key.NavigateUrl = k.Value.Url;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 16

怎么样:

var dict = new[] {
            new { Text = "TextA", Url = "UrlA" },
            new { Text = "TextB", Url = "UrlB" }
        }.ToDictionary(x => x.Url);
// or to add separately:
dict.Add("UrlC", new { Text = "TextC", Url = "UrlC" });
Run Code Online (Sandbox Code Playgroud)

但是,您可以只foreach在列表/数组上...

var arr = new[] {
    new { Text = "TextA", Url = "UrlA" },
    new { Text = "TextB", Url = "UrlB" }
};
foreach (var item in arr) {
    Console.WriteLine("{0}: {1}", item.Text, item.Url);
}
Run Code Online (Sandbox Code Playgroud)

如果您需要通过(唯一)键进行O(1)查找,则只需要一个字典.