English 中文(简体)
将数据输入清单
原标题:DeSerialize DataTable Row Collection into List<T>
  • 时间:2009-10-09 12:06:45
  •  标签:

我有数据集。 我有一个与栏目名称相符的类别。

我怎么能从数据可查的罗资料中找到一份名单?

我说的是,如(MyType)新锡尔施舍(MyType)等。

最佳回答

我建议撰写班级,以进行这一转变,而不是使用XML序列化,这要求开展大量额外工作,并与你的物体与你的数据模型有着太密切的联系。

另一方面,有时你只得从XML中解冻藏。 为做到这一点,你需要做的是。 <>XmlSerializer, Node tomap to the Collection/em>。

否则,DataTable.WriteXml 产生一个叫做<DocumentElement>的根本要素。 例如,如果你从一个“Name”和“LastName”列栏书写,你会这样做:

<DocumentElement>
    <Name>
        <FirstName>Jon</FirstName>
        <LastName>User</LastName>
    </Name>
</DocumentElement>

问题是,<代码>XmlSerializern tnow that “DocumentElement” should be deserialized to You Collection category. 有两个方法可以说明如何。

By Convention

<代码>XmlSerializer知道,一个叫做“ArrayOfMyClass”的深层元素应为<代码>MyClass的收集图。

添加“ArrayOfMyClass”的<代码>DataTable至,编号为“ArrayOfMyClass”。

<ArrayOfMyClass>
    <MyClass>
    // ... elements that map to properties of MyClass
    </MyClass>
</ArrayOfMyClass>

......将宇宙化成<代码>List<MyClass>按要求。

By Hand

作为替代办法,你可以这样做:

XmlRootAttribute root       = new XmlRootAttribute("DocumentElement");
XmlSerializer    serializer = new XmlSerializer(typeof(List<Name>), root);

假设其他所有东西都是ok(即你的数据栏目名称与你的类别财产名称相匹配),这将按预期在<代码>List<MyClass>上 des。

Edit: 注意到这一办法存在一个相当严重的问题(有相当程度的繁琐的工作):XmlSerializer 执行情况:

问题回答

如果我正确理解你的问题,你就希望把每几行数据的领域列入你的地图册,然后将案件列入清单?

在这种情况下,最直截了当的方式是:

create the List object
loop over the rows
   create a new YourClass object
   map the fields to the properties of the YourClass object
   add the YourClass object to the list




相关问题