C# 将xml转换为数据表的存储过程类型

C# 将xml转换为数据表的存储过程类型,c#,C#,我从数据库的存储过程中获取一个数据表,然后转换为xml并存储在设置文件中 dsTableAdapters.usp_GetMyDataTableAdapter taMyData = new dsTableAdapters.usp_GetMyDataTableAdapter(); ds.usp_GetMyDataDataTable dtMyData = taMyData.GetData(); string xmlMyData; using (StringWriter sw = new Strin

我从数据库的存储过程中获取一个数据表,然后转换为xml并存储在设置文件中

dsTableAdapters.usp_GetMyDataTableAdapter taMyData = new dsTableAdapters.usp_GetMyDataTableAdapter();
ds.usp_GetMyDataDataTable dtMyData  = taMyData.GetData();

string xmlMyData;
using (StringWriter sw = new StringWriter())
{
    dtMyData.WriteXml(sw);
    xmlMyData = sw.ToString();
}
这个很好用

另外(如果用户不在线),我想读取设置文件并使用它。我可以通过

StringReader theReader = new StringReader(xmlMyData);
DataSet theDataSet = new DataSet();
theDataSet.ReadXml(theReader);
DataTable mydt = theDataSet.Tables[0];
但我的问题是无法将其转换为ds.usp_GetMyDataTable类型的datatable。做

dtMyData = (ds.usp_GetMyDataDataTable)mydt;

不起作用。欢迎任何想法。

您应该创建类型列表,而不是传递特定于过程的结果集对象。您所经历的是为什么要创建实体或域对象来存储可以从各种源填充的数据


无论如何,您的问题没有明显的快速答案,您的问题基本上是问为什么不将
数据表转换为您创建的自定义类,原因是它们是两个完全不同的类。

我最终能够让它工作。把答案放在这里,以防其他人感兴趣,尽管你可能想接受T McKeown的建议,我不应该这样做

dtMyData = new ds.usp_GetMyDataDataTable();
StringReader theReader = new StringReader(Properties.Settings.Default.MyData);
dtMyData.ReadXml(theReader);

因为它们根本不一样。我理解为什么它不允许我将数据表强制转换为自定义类,但考虑到我可以从自定义类转换为xml,如上所示,从xml到我的cusom类肯定有办法,因为xml对象只是名称和值的节点列表,这与隐式将对象转换为不同类型完全不同。