使用字典作为表的C#Core

使用字典作为表的C#Core,c#,.net-core,C#,.net Core,我的目标是使用我获得的数据并将其放入表中。两列,一列名为Name,另一列名为Region。我对c#非常陌生,发现有一个名为datatable的函数可以让你这么做,但有一点c#core中没有的研究(如果我错了,请纠正我)。因此,我找到了一种叫做词典的东西,并尽了最大努力: Dictionary<string, string> dict = new Dictionary<string, string>(); foreach (var rGr

我的目标是使用我获得的数据并将其放入表中。两列,一列名为Name,另一列名为Region。我对c#非常陌生,发现有一个名为datatable的函数可以让你这么做,但有一点c#core中没有的研究(如果我错了,请纠正我)。因此,我找到了一种叫做词典的东西,并尽了最大努力:

        Dictionary<string, string> dict = new Dictionary<string, string>();


        foreach (var rGroup in azure.ResourceGroups.List())
        {

          //  dict.Add("Name", rGroup.Name);
          //  dict.Add("Region", rGroup.Region.Name);
            dict.Add(rGroup.Name, "Name");
            dict.Add(rGroup.Region.Name, "Region");

        }
        foreach (var di in dict)
        {
            Console.WriteLine("Key = {0}, Value = {1}", di.Key, di.Value);
        }
Dictionary dict=new Dictionary();
foreach(azure.ResourceGroups.List()中的var rGroup)
{
//dict.Add(“Name”,rGroup.Name);
//dict.Add(“Region”,rGroup.Region.Name);
dict.Add(rGroup.Name,“Name”);
dict.Add(rGroup.Region.Name,“Region”);
}
foreach(dict中的变量di)
{
WriteLine(“Key={0},Value={1}”,di.Key,di.Value);
}
我得到了错误

发生System.ArgumentException HResult=0x80070057消息=An 已添加具有相同密钥的项。关键字:北欧
Source=StackTrace:at System.ThrowHelper.ThrowAddingDuplicateWithKeyArgumentException(对象 在System.Collections.Generic.Dictionary`2.Insert(TKey, AzureAPi.Program.RunSample(IAzure)处的TValue(布尔加法) azure)在C:\Users\solar\documents\visual studio中 2017\Projects\AzureAPi\AzureAPi\Program.cs:第44行 中的AzureAPi.Program.Main(字符串[]args) C:\Users\solar\documents\visual studio 2017\Projects\AzureAPi\AzureAPi\Program.cs:第72行


有人能帮我做错事吗?此外,这是最好最简单的方法吗?

我相信您添加的项目不正确

foreach (var rGroup in azure.ResourceGroups.List()) {
    dict[rGroup.Name] = rGroup.Region.Name;
}
使用组名作为键,使用区域作为值

除此之外,您还可以创建一个强类型对象来保存数据

public class MyTableName {
    public string Name { get; set; }
    public string Region { get; set; }
}
并从集合中构造它

注意:使用Linq

var data = azure.ResourceGroups.Select(rGroup => new MyTableName {
                                            Name = rGroup.Name,
                                            Region = rGroup.Region.Name
                                       }).List()

foreach (var item in data) {
    Console.WriteLine("Key = {0}, Value = {1}", item.Name, item.Region);
}
也可以使用匿名类型

var data = azure.ResourceGroups.Select(rGroup => new {
                                            Name = rGroup.Name,
                                            Region = rGroup.Region.Name
                                       }).List()

foreach (var item in data) {
    Console.WriteLine("Key = {0}, Value = {1}", item.Name, item.Region);
}

接近您想法的方法可以是一个对象列表,其中只包含您的区域和区域名称

创建这样一个类

public class Region
{
    public string Name { get; set; }
    public string RegionName { get; set; }
}
并将字典替换为区域类型列表

List

字典键(dict.Add的第一个参数)必须是唯一的。如果
azure.ResourceGroups.List()
可以有重复的
.Name
字段,则不能使用
词典。如果需要允许重复,则应使用
列表
或类似列表。如果您显示azure.ResourceGroups.List()的值,并解释如何使用它们,我们可能会给出更好的建议。