我的目标是使用获得的数据并将其放在表中。两列,一列称为“名称”,另一列称为“区域”。我对C#还是很陌生,发现有一个名为datatable的函数可以让您做到这一点,但是有一些研究在c#核心中不可用(如果我错了,请纠正我)。因此,我发现了这个叫做字典的东西,并尽了最大的努力:

        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);
        }


我得到错误


  发生System.ArgumentException HResult = 0x80070057 Message = An
  具有相同键的项目已被添加。钥匙:北欧洲
  源= StackTrace:在
  System.ThrowHelper.ThrowAddingDuplicateWithKeyArgumentException(Object
  键),位于System.Collections.Generic.Dictionary`2.Insert(TKey键,
  TValue值,布尔值添加)在AzureAPi.Program.RunSample(IAzure
  天青)在C:\ Users \ solar \ documents \ visual studio
  2017 \ Projects \ AzureAPi \ AzureAPi \ Program.cs:第44行位于
  AzureAPi.Program.Main(String [] args)在
  C:\用户\太阳能\文档\ 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);
}

关于c# - 使用字典作为表的C#核心,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46017466/

10-09 00:01