c# - DataTable 行属性

标签 c# vb.net

VB 允许在 System.Data.DataTable 类型上直接建立索引,而不是调用“行”属性。 “行”不是索引器,而是返回 DataRowCollection 的常规属性。

Dim dt As New DataTable()
Dim x = dt(0) 'instead of Dim x = dt.Rows(0)

C# 要求显式调用“行”属性:

DataTable dt = new DataTable();
var x = dt.Rows(0);

这是为什么?有没有办法使用反射找到这种行为?反射方法 GetDefaultMembers 不会为 System.Data.DataTable 返回任何内容。

最佳答案

如果您查看 VB 项目的引用资料,您会发现其中有一个用于 System.Data.DataSetExtensions.dll。删除它,您将看到您的代码不再适用于 VB。看来 VB 编译器已被写入以某种方式映射此:

Dim x = dt(0)

为此:

Dim x = dt.AsEnumerable().ElementAt(0)

C# 编译器不执行等效操作,您必须显式调用这些方法。 VB 编译器执行这些隐藏一些复杂性的小有用的事情并不少见。就个人而言,我总是使用 Rows 属性。这样做并不麻烦。

关于c# - DataTable 行属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55173624/

相关文章:

vb.net - 从 vb.net 中的窗体外部获取突出显示的文本

vb.net - 如何在数据表中动态创建列并为其赋值?

c# - 为什么 Visual Studio 无法处理 HTMLDocument 类?

c# - 编写条件语句的替代方法

c# - 使用 Sharpbox API 上传到 Dropbox

vb.net - 在vb.net中异步调用Web服务

c# - 如何在 C# 中获取内存 MS Windows 7 的当前页面大小?

c# - 当它似乎被添加到项目时,引用丢失的错误

c# - 如何判断属性是否需要调用?

c# - 有没有办法以编程方式最小化窗口