首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当启用选项严格时,Linq查询对DataGridViewRow有一个隐式强制转换错误。

当启用选项严格时,Linq查询对DataGridViewRow有一个隐式强制转换错误。
EN

Stack Overflow用户
提问于 2009-07-06 20:26:57
回答 1查看 2.2K关注 0票数 1

我有一个DataGridView,它绑定到一个名为"BaseChange“的对象列表中。BaseChange对象由4个属性组成..。

  • ChangeType
  • ChangeStatus
  • ChangeDescription
  • LastChangeDate

datagridview包含所有4个值的列以及第5列(称为“colIsSelected”的复选框列)。将列表绑定到网格并显示项目没有问题。

问题是,在启用选项严格时,获取网格中选定项的查询将给我一个隐式强制转换错误。

这是查询..。

代码语言:javascript
运行
复制
Dim _changes As List(Of BaseChange)

_changes = (From _row As DataGridViewRow In dgvChanges.Rows() _
            Where Convert.ToBoolean(_row.Cells(NAME_COLUMN_IS_SELECTED).Value) = True _
            Select DirectCast(_row.DataBoundItem, BaseChange)).ToList()

...and,它产生正确的结果,选项严格关闭。隐式强制转换是在"_row As DataGridViewRow“代码上,完整的消息是”从'Object‘到’System.Windows.Forms.DataGridViewRow‘的隐式转换“。

如果我将"As DataGridViewRow“排除在查询之外,则会在_row.Cells和_row.DataBoundItem上得到一个后期绑定错误,这也会导致选项严格失败。

我需要这与选项严格启用,并在VB中工作。我是不是漏掉了什么?有人有建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-06 20:51:12

代码语言:javascript
运行
复制
(From _row As DataGridViewRow In dgvChanges.Rows() 

_row对象的类型必须与集合类型的单一版本相匹配。

如:

代码语言:javascript
运行
复制
    'Assumes Option Strict On and Option Implicit On
    Dim _changes = (From _row In dgvChanges.Rows() _            
           Where Convert.ToBoolean(ctype(_row,DataGridViewRow).Cells(NAME_COLUMN_IS_SELECTED).Value) = True _           
Select DirectCast(ctype(_row,DataGridViewRow).DataBoundItem, BaseChange)).ToList()

Linq将您的row ()集合视为IEnumerable,因此您的行是一个对象。下面的解释会更详细。

添加:

添加选项推断应该简化这一点。

详情见:

什么是最好的方式来混合VB.NET的选项严格和新的选项推断指令?

http://social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/e3ec737a-42f8-4767-a190-78390202a991/

说明:我对为什么不简单做了更多的调查。RowCollection用于DataGridView实现了返回对象的旧的IEnumberable接口,而较新的集合类型实现了泛型的IEnumerable(Of T)接口,后者直接返回类型,从而消除了转换的需要。

有关实现的接口,请参见msdn

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1089059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档