Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于LINQ的数据网格视图&x27;s是“;“断开连接”;从LINQ表达式?_C#_Linq_Datagridview_Datatable - Fatal编程技术网

C# 基于LINQ的数据网格视图&x27;s是“;“断开连接”;从LINQ表达式?

C# 基于LINQ的数据网格视图&x27;s是“;“断开连接”;从LINQ表达式?,c#,linq,datagridview,datatable,C#,Linq,Datagridview,Datatable,我有一个用LINQ创建的DataView,连接到DataGridView。当我在DataGridView中更改值时,会立即执行LINQ表达式,并在我的DataView中更改结果 是否有方法将DataGridView从LINQ脚本“断开”以抑制DataView中的更改 void MyFunc() { DataGridView myGrid; DataTable myTable; // filling the table // assigning the tabl

我有一个用
LINQ
创建的
DataView
,连接到
DataGridView
。当我在
DataGridView
中更改值时,会立即执行
LINQ
表达式,并在我的
DataView
中更改结果

是否有方法将DataGridView从LINQ脚本“断开”以抑制DataView中的更改

void MyFunc()
{
    DataGridView myGrid;
    DataTable myTable;

    // filling the table

    // assigning the table to the grid
    myGrid.DataSource = myTable;

    // filtering DataTable with LINQ
    var filteredRows = (from DataRow in myTable.AsEnumerable() 
                        where (...) 
                        select (row));

    // assigning the result to the DataGrid
    myGrid.DataSource = filteredRows.AsDataView();

    ...
}

执行/迭代查询并使用
CopyToDataTable
获取新的数据表,然后将其分配为
DataSource

var filteredRows = (from DataRow in myTable.AsEnumerable() 
                        where (...) 
                        select (row)).CopyToDataTable();
DateGridView.DataSource = filteredRows;
这将导致一个临时的
DataTable
成为网格的源,并与LINQ表达式断开连接。
稍后,您可以从
数据源
获取
数据表
,并进行更新

你的意思是:推迟更新?您确实想更新它们,但不是现在,不是吗?尝试
CopyToDataTable
而不是
AsDataView
是的,我想推迟更新@Daniel:我必须删除行。当我使用表的副本时,我必须手动删除原始表中的行。我必须删除行。当我使用表的副本时,我必须手动删除原始表中的行。@boboes,是的,这是您为断开连接模式支付的费用。好的,因此我将复制LINQ筛选器中使用的字段。第一个将显示,其他将隐藏。用户更改显示的字段,并使用“更新”按钮将可见字段转换为隐藏字段一次,然后执行LINQ。对我来说,似乎比手动同步表要好。谢谢大家:)