【问题标题】:VB.NET Copy specific cell from selected Datagridview into a List of LongVB.NET 将选定 Datagridview 中的特定单元格复制到 Long 列表中
【发布时间】:2018-12-16 18:17:53
【问题描述】:

我有一个包含大约 400,000 行的 datagridview - 在用户选择多行的情况下,我想要一个长列表以填充特定单元格,从选定的行中,即我拥有的隐藏主键值数据网格视图。

我已经做到了这一点,但我似乎无法让它工作,我认为通过 LinQ 进行操作会比作为 For...Next 或 For...在 selectedrows 上的每个循环更快 - 特别是如果用户执行(并且可以并且将)选择 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

【问题讨论】:

标签: vb.net linq datagridview datagridviewcolumn


【解决方案1】:

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()

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多