C# 获取与选定DataGridView行相关的所有DataRows的集合

C# 获取与选定DataGridView行相关的所有DataRows的集合,c#,winforms,datagridview,C#,Winforms,Datagridview,有没有直接的方法可以做到这一点,或者我需要迭代DataGridView.SelectedRows,然后为每一行访问DataGridViewRow.DataBoundItem以创建一个?DataGridView不提供SelectedDataRows和SelectedRows in not Linq enabled,因此是的,您必须编写foreach循环 向DataGridView添加“SelectedDataRows”的通用扩展方法: public static T[] SelectedDataR

有没有直接的方法可以做到这一点,或者我需要迭代DataGridView.SelectedRows,然后为每一行访问DataGridViewRow.DataBoundItem以创建一个?

DataGridView不提供SelectedDataRows和SelectedRows in not Linq enabled,因此是的,您必须编写foreach循环

向DataGridView添加“SelectedDataRows”的通用扩展方法:

public static T[] SelectedDataRows<T>(this DataGridView dg) where T : DataRow
{
    T[] rows = new T[dg.SelectedRows.Count];
    for (int i = 0; i < dg.SelectedRows.Count; i++)
        rows[i] = (T)((DataRowView)dg.SelectedRows[i].DataBoundItem).Row;

    return rows;
}
public static T[]选择了数据行(此DataGridView dg),其中T:DataRow
{
T[]行=新的T[dg.SelectedRows.Count];
for(int i=0;i

这是通用的,因此可以使用类型化数据集返回类型化数据行。如果需要,您可以让自己的数据库返回一个
DataRow[]
。这还假设您的DataGridView有一个绑定到它的
DataView

这听起来很直接。一个假设的DataGridView.GetSelectedRowsInDataSource方法会比我自己编写该方法更直接。与其让维护程序员质疑我重写框架的能力,不如问一个愚蠢的问题。