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
VB.NET将选定Datagridview中的特定单元格复制到长单元格列表中_Vb.net_Linq_Datagridview_Datagridviewcolumn - Fatal编程技术网

VB.NET将选定Datagridview中的特定单元格复制到长单元格列表中

VB.NET将选定Datagridview中的特定单元格复制到长单元格列表中,vb.net,linq,datagridview,datagridviewcolumn,Vb.net,Linq,Datagridview,Datagridviewcolumn,我有一个datagridview,它包含大约400000行-当用户选择多行时,我希望从所选行(即datagridview上的隐藏主键值)中填充一个特定单元格的long列表 我已经做到了这一点,但我似乎无法让它发挥作用,我认为通过LinQ进行操作将比作为For…Next或For…selectedrows上的每个循环更快-特别是如果用户执行(并且能够并且将要)选择100000多行-但我的LinQ语法非常糟糕-因此,当我在这里时,如果有人对LinQ也有很好的推荐,那就太好了(虽然有很多书,但没有什么比

我有一个datagridview,它包含大约400000行-当用户选择多行时,我希望从所选行(即datagridview上的隐藏主键值)中填充一个特定单元格的long列表

我已经做到了这一点,但我似乎无法让它发挥作用,我认为通过LinQ进行操作将比作为For…Next或For…selectedrows上的每个循环更快-特别是如果用户执行(并且能够并且将要)选择100000多行-但我的LinQ语法非常糟糕-因此,当我在这里时,如果有人对LinQ也有很好的推荐,那就太好了(虽然有很多书,但没有什么比读过几本书的人推荐更好的了)

VS似乎不喜欢c.ColumnIndex(0)。Value

属性SelectedRows是DataGridViewSelectedRowCollection的集合,而不是DataGridViewCell的集合。因此,应该强制转换为适当的类型,然后可以使用Linq枚举具有Cells属性的DataGridViewRow集合。此属性是DataGridViewCell的集合。现在,您可以将该集合用作数组,并使用索引访问适当的列。
最后,不要依赖VB.NET提供的自动类型转换。我建议在你的转换中总是要明确。使用Conver.ToInt64或Int64.Parse

Dim result = DataGridView1.SelectedRows.
                           Cast(Of DataGridViewRow).
                           Select(Function(c) Convert.ToInt64(c.Cells(0).Value)).
                           ToList()
属性SelectedRows是DataGridViewSelectedRowCollection的集合,而不是DataGridViewCell的集合。因此,应该强制转换为适当的类型,然后可以使用Linq枚举具有Cells属性的DataGridViewRow集合。此属性是DataGridViewCell的集合。现在,您可以将该集合用作数组,并使用索引访问适当的列。
最后,不要依赖VB.NET提供的自动类型转换。我建议在你的转换中总是要明确。使用Conver.ToInt64或Int64.Parse

Dim result = DataGridView1.SelectedRows.
                           Cast(Of DataGridViewRow).
                           Select(Function(c) Convert.ToInt64(c.Cells(0).Value)).
                           ToList()
我引用@jmcilhinney“写得好的LINQ代码几乎总是比等效的写得好的非LINQ代码执行得慢。”我引用@jmcilhinney“写得好的LINQ代码几乎总是比等效的写得好的非LINQ代码执行得慢。”