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

时间:2018-12-16 18:17:54

标签: vb.net linq datagridview datagridviewcolumn

我有一个datagridview,其中包含约40万行-用户在其中选择多行,我希望从所选行中填充特定单元格的long列表,即我拥有的隐藏主键值Datagridview。

我已经了解到了这一点,但是我似乎无法使其正常工作,我认为通过LinQ进行操作比在选定行上执行For ... Next或For ... Each循环要快-尤其是在用户执行(并且可以并且将会)选择100,000+行-但是我的LinQ语法太糟糕了-所以当我在这里的时候,如果有人对LinQ提出了很好的建议,那也很好(尽管那里有书,但是没有比阅读过其中一些内容的其他人的推荐更好)

   Dim Mylist As New List(Of Long)

            Mylist.AddRange(DataGridView1.SelectedRows.Cast(Of DataGridViewCell).Select(Function(c) c.ColumnIndex(0).Value).ToList)

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

1 个答案:

答案 0 :(得分:2)

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

The `Member` instance is not valid. Details: `password` can't be blank (value: undefined).