我建立了一个datatable,,想把它的值赋给一个List,怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我建立了一个datatable,,想把它的值赋给一个List,怎么办?相关的知识,希望对你有一定的参考价值。

DataTable dt = GetZoneInfoFromTxt(filePath);//调用一个获取datatable的函数
var result = from d in dt.Select() select d;
List<ZInfo> zoneinfo = result.ToList<ZInfo>();
然后报错:

Error 104 'System.Collections.Generic.IEnumerable<System.Data.DataRow>' does not contain a definition for 'ToList' and the best extension method overload 'System.Linq.Enumerable.ToList<TSource>(System.Collections.Generic.IEnumerable<TSource>)' has some invalid arguments

Error 105 Instance argument: cannot convert from 'System.Collections.Generic.IEnumerable<System.Data.DataRow>' to 'System.Collections.Generic.IEnumerable<Capacity.BjmetroCapacity.SystemManagement.Modules.ZInfo>'

不知道怎么弄了~~~

参考技术A 自己写的方法,循环遍历DataTable,将他转换成List
给你个例子吧
private List<ZInfo> DataTableToList(DataTable dt)

if(dt==null)return null;
List<ZInfo> list = new List<ZInfo>();
for(int i=0;i<dt.Rows.Count;i++)

ZInfo Info = new ZInfo();
Info.id = dt.Rows[i]["id"].ToString();
Info.Name = dt.Rows[i]["Name"].ToString();
list.Add(Info);

return list;

这是个简单的例子
参考技术B dt没有包含ZInfo类型的信息,所以没法转换,得遍历每行并构建ZInfo对象再添加到list里面。本回答被提问者采纳

将嵌套dict的值赋给python中的列表

我有一个JSON对象列表的文件。它看起来像这样:

[
  {
    "id": 748,
    "location": {
      "slug": "istanbul",
      "parent": {
        "id": 442,
        "slug": "turkey"
      }
    },
    "rank": 110
  },
  {
    "id": 769,
    "location": {
      "slug": "dubai",
      "parent": {
        "id": 473,
        "slug": "uae"
      }
    },
    "rank": 24
  }
]

我想创建一个酒店父名称列表,所以我写这个代码来做这个,我读了JSON文件并将其分配给一个变量,那部分是正确的。但看看这段代码:

with open('hotels.json', 'r', encoding="utf8") as hotels_data:
    hotels = json.load(hotels_data)

parents_list = []
for item in hotels:
    if item["location"]["parent"]["slug"] not in parents_list:
        parents_list.append(item["location"]["parent"])

当我运行此代码时,我给出了这个错误:

if item["location"]["parent"]["slug"] not in parents_list:
TypeError: 'NoneType' object is not subscriptable

这段代码不起作用,所以我试着打印JSON对象,所以我在循环中写了这个:

print(item["location"]["parent"]["slug"])

此代码打印我想要的值,但也给我完全相同的错误。感谢您的任何帮助。

答案

我尝试运行代码,它似乎与您的数据集正常工作。

但是,我只是为您的数据集hotels = [...]指定了酒店,而不是打开文件来读取数据。

我得到的结果是这样的:

[{'id': 442, 'slug': 'turkey'}, {'id': 473, 'slug': 'uae'}]

如果你打印hotels你的结果是什么,它和你在这里显示的一样吗?


如果您的数据集中实际上有更多数据,那么我可以假设某些词典不包含item["location"]["parent"]["slug"]。如果是这种情况,你应该跳过这些,通过在从item读取之前先检查每个parents_list中是否存在该元素。

例如:

try:
    item["location"]["parent"]["slug"]
except (KeyError, TypeError) as e:
    pass
else:
    if item["location"]["parent"]["slug"] not in parents_list:
        parents_list.append(item["location"]["parent"])
另一答案

我不能像你一样复制同样的错误。我唯一能想到的是JSON中每个对象中的最后一项不应该有逗号。看看是否能解决您的错误

以上是关于我建立了一个datatable,,想把它的值赋给一个List,怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中能把一个二维数组的值赋给一个一维数组吗

利用matlab对矩阵的特定位置赋值?

sql server 2000 如何把select的值赋给一个变量

nginx配置文件中怎么把hostname的值赋给其它变量

PHP将数据库的值赋给单选按钮

如何将 T 类型的值赋给 uchar 类型的 data[i] 而不会造成任何损失?