使用LINQ在绑定的DataGridView的数据源中过滤修改/添加的DataRows

时间:2019-03-06 22:17:52

标签: c# linq datagridview bindingsource

我开始使用某些Data Bound DataGridView,但是我不喜欢保存时要做的事情。

foreach (DataGridViewRow dgvr in dgvWorkcenters.Rows)
            {
                if (dgvr.DataBoundItem != null)
                {
                    DataRow dr = ((DataRowView)dgvr.DataBoundItem).Row;
                    if (dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Modified)
                    {
                        cOM_PROCCESS_CONTROL_WORKCENTERSTableAdapter.Update(dr);
                    }
                }
            }

IMO,不是更新已添加或已修改行的最有效方法。我想使用LINQ来做到这一点,但是我陷入了DataGridView数据源的问题。由于我为DataGridView使用BindingSource,因此DataSource不再具有“ Enumerable”。 这是我尝试过的:

var dt = ((DataTable)dgvWorkcenters.DataSource).AsEnumerable().Where
                (r => r.RowState == DataRowState.Added || r.RowState == DataRowState.Modified).CopyToDataTable();

由于我的数据源是BindingSource,所以.NET不允许我将其强制转换为数据表。

如何使用绑定源使用LINQ从DataGridView中仅获取添加/修改的行?还是如何从绑定源获取DataTable(具有完整的DataRowStates)?

0 个答案:

没有答案