2017-09-02 6 views
1

私の目標は、取得したデータを使用してテーブルに入れることです。 2つの列、の名前は、もう1つはという地域と呼ばれます。私はかなり新しくC#であり、あなたがそれを行うことを可能にするdatatableという関数があることを発見しましたが、C#コアでは利用できない少しの研究で(私が間違っていれば私を修正してください)したがって、私はこの事と呼ばれる辞書を発見し、自分のベストを試みた:私はC#テーブルを辞書として使用するコア

System.ArgumentExceptionのはHRESULT = 0x80070057がメッセージは同じキーを持つ 項目が既に追加されている=発生したエラーを取得し

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

を。キー:northeurope
出所=のStackTrace:AzureAPi.Program.RunSampleでSystem.Collections.Generic.Dictionary`2.Insertで System.ThrowHelper.ThrowAddingDuplicateWithKeyArgumentException(オブジェクト キー)(TKEYキー、 TValue値、ブールアドオン)で2017 \ Projects \ AzureAPi \ AzureAPi \ Program.cs:44行目 AzureAPi.Program.Main(String [] args)in C:\ Users \ solar \ documents \ visualスタジオ 2017 \ Projects \ AzureAPi \ AzureAPi \プロジェクト\ AzureAPi \ AzureAPi \ Program.csを\ Visual Studioの 2017 \太陽光\ドキュメント\ユーザー:行72

誰かが何で私を助けることができます私は間違いをした?さらに、これはこれに最も簡単にアプローチできますか?

+1

辞書キー(dict.Add' 'の最初のparam)が一意でなければなりません。 'azure.ResourceGroups.List()'に重複した '.Name'フィールドがある場合、' Dictionary'を使うことはできません。重複を許可する必要がある場合は、 'List'などを使用する必要があります。あなたが 'azure.ResourceGroups.List()'の値を示し、あなたがそれらで何をしようとしているのかを説明すれば、より良い助言を与えることができるかもしれません。 –

答えて

1

は、私はあなたがあなたの価値として重要な地域として、グループ名を使用

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

を保持して、コレクションからそれを構築するために強く型付けされたオブジェクトを作成することができますそれ以外

注:また、あなたの考えに近いアプローチは、単にあなたの地域を含むオブジェクトのリストかもしれ

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

匿名型を使用することができます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); 
} 

を使用し、地域の名前。

この

public class Region 
{ 
    public string Name { get; set; } 
    public string RegionName { get; set; } 
} 

のようなクラスを作成し、地域とのあなたの辞書を交換するには、リストを入力しました。

List<Region>

関連する問題