在开发将XML导入SQL Server的应用程序时,XML的结构如下所示:How to get multiple tables in Dataset from XML
我可以使用上面的代码将XML加载到DataSet中并获得正确的表:
var ds = new DataSet();
var employees = new DataTable("Employees");
var cars = new DataTable("Cars");
//and others
using Stream stream = new FileStream("data.xml", FileMode.Open, FileAccess.Read);
ds.ReadXml(stream);
foreach (DataRelation dataRelation in ds.Relations)
{
switch (dataRelation.ParentTable.TableName)
{
case "Employees":
employees = dataRelation.ChildTable;
break;
case "Cars":
cars = dataRelation.ChildTable;
break;
//and others
}
}
但是当我尝试用LINQ做类似的事情时
var dt1 = ds.Relations.Where(x => x.RelationName == "Employees").FirstOrDefault();
我得到这个错误:
错误CS1061“DataRelationCollection”不包含“Where”的定义,并且找不到接受“DataRelationCollection”类型的第一个参数的可访问扩展方法“Where”(是否缺少using指令或程序集引用?)
是否有更好的方法从数据集获取特定的数据表(通过使用DataRelation)?
1条答案
按热度按时间vyu0f0g11#
DataRelationCollection
仅实现ICollection
的非泛型版本(继承自InternalDataCollectionBase
),这在支持的LINQ方法方面非常有限,您可以通过OfType
调用“启用”泛型方法: