C# 无法强制转换类型为';System.Data.DataRowView';输入';System.Data.DataRow';

C# 无法强制转换类型为';System.Data.DataRowView';输入';System.Data.DataRow';,c#,C#,我在foreach循环中有以下异常 无法将“System.Data.DataRowView”类型的对象强制转换为 “System.Data.DataRow” 如何解决该问题?看起来您使用了DataRow作为foreach循环变量类型,而实际上您正在使用DataRowView类型迭代可枚举变量。检查DataRowView是否具有您所需的功能,如果有,您可以用一个替换另一个。或者,您可以修改代码以使用DataRow返回可枚举数据,而不是使用DataRowView返回可枚举数据,而不是使用foreac

我在foreach循环中有以下异常

无法将“System.Data.DataRowView”类型的对象强制转换为 “System.Data.DataRow”


如何解决该问题?

看起来您使用了
DataRow
作为foreach循环变量类型,而实际上您正在使用
DataRowView
类型迭代可枚举变量。检查
DataRowView
是否具有您所需的功能,如果有,您可以用一个替换另一个。或者,您可以修改代码以使用
DataRow
返回可枚举数据,而不是使用
DataRowView
返回可枚举数据,而不是使用
foreach(myDataView中的DataRow dr)
,请尝试

foreach(myDataView中的DataRowView drv)
A
DataRowView
不是
DataRow
,不能转换为
DataRow
。但是,您可以使用
属性访问相应的
数据行

foreach(DataRowView drv in dataView)
{
    DataRow row = drv.Row;
    ...
}
你可以像这样施展:

datarow= DirectCast (System.Data.DataRowView, System.Data.DataRow).row 

我相信你会尝试这样做

DataRowView行=(DataRowView)e.Item.DataItem

应该这样做


System.Data.Common.DbDataRecord objData=(System.Data.Common.DbDataRecord)e.Item.DataItem

我很确定我能猜到这一条,但为了以防万一,请先发布您的代码。(foreach循环)我删除了WPF标记,因为这个问题与wpforeach(DataRow dtrCurrentRow in(((System.Data.DataView)lstData.ItemsSource)).Table.Rows)无关。{}我使用了上面的代码来获得结果,lstData是WPF的listbox控件。感谢您的帮助。您也可以使用LINQ:
foreach(dataView.Select(drv=>drv.row)中的DataRow行)在一行中完成此操作。
11年后,仍然很有用。