列名已经属于C#中的此DataTable错误

时间:2014-08-29 00:07:57

标签: c#

我似乎无法使用此代码传递此错误消息。

System.Data.DuplicateNameException: A column named 'Url' already belongs to this DataTable.

foreach (var user in users.Users)
{
      using (DataTable table = new DataTable())
      {
         table.Clear();
         for (int i = 0; i < users.Users[0].GetType().GetProperties().Count(); i++)
         {
            table.Columns.Add(users.Users[0].GetType().GetProperties()[i].Name);
            Console.WriteLine(table.Columns.Add(users.Users[0].GetType().GetProperties()[i].Name));
         }
      }

}

有什么想法吗?

更新

var properties = users.Users[0].GetType().GetProperties();    

for (int i = 0; i < properties.Count(); i++) 
{
    table.Columns.Add(properties[i].Name, typeof(String));
}

因为我不知道使用foreach的类型是什么。这样:

var properties = users.Users[0].GetType().GetProperties();
foreach (PropertyInformation prop in properties)
{
     table.Columns.Add(properties.);
     Console.WriteLine(prop.Name);
}

给了我Cannot convert type 'System.Reflection.PropertyInfo' to 'System.Configuration.PropertyInformation'

无论如何,我可以弄清楚如何在那里获得正确的类型? @barrick

1 个答案:

答案 0 :(得分:3)

错误不会存在。在Console.WriteLine()调用中,您再次添加列,这将导致问题。

尝试:

var properties = users.Users[0].GetType().GetProperties();

foreach (PropertyInfo prop in properties)
{
    table.Columns.Add(prop.Name);
    Console.WriteLine(prop.Name);
}