我的目标是使用获得的数据并将其放在表中。两列,一列称为“名称”,另一列称为“区域”。我对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/