使用字典作为表的C#Core
我的目标是使用我获得的数据并将其放入表中。两列,一列名为Name,另一列名为Region。我对c#非常陌生,发现有一个名为datatable的函数可以让你这么做,但有一点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
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()的值,并解释如何使用它们,我们可能会给出更好的建议。