【问题标题】:Whats the difference between using assigned variables and straight access使用赋值变量和直接访问有什么区别
【发布时间】:2011-09-10 18:34:43
【问题描述】:

请考虑以下各项的好处、用途或收益,您为什么这么认为?除了访问数据的快捷方式。顺便说一句,有没有办法以using (Resource){//Code} 格式使用 DataView。

DataTable dtUsers = UsersRepository.GetAllUsers();
Users.Name = dtUsers.Rows[0]["Name"].ToString();
Users.Address = dtUsers.Rows[0]["Address"].ToString();
...
...
...

DataView dvUsers = UsersRepository.GetAllUsers().DefaultView;

Users.Name = dvUsers[0]["Name"].ToString();
Users.Address = dvUsers[0]["Address"].ToString();
...
...
...

【问题讨论】:

  • 这取决于您接下来将使用 dtUsers 做什么,这将使您比 dvUsers 更具灵活性
  • @eugene 但是DataView 确实有ToTable 方法来取回表格,对吗?以上也没有性能提升等??
  • ToTable() 方法正是我所说的不是“开箱即用”的意思。您的问题取决于您接下来对 Dataview 或 Datatable 对象做什么。

标签: c# asp.net datatable equals dataview


【解决方案1】:

DataView 能够在不更改数据表本身的数据的情况下执行排序、过滤、搜索、编辑和导航 (msdn)。 其中最大的功能之一是将数据绑定到类似控件的网格,以便您可以控制显示哪些数据以及如何显示(除了在 sql 级别上对其进行过滤/排序)。

要注意的另一件事是,您可以从一个数据表中获得多个数据视图,即一个网格将显示它是男性的所有行,而另一个网格将显示所有女性例如。

为什么要在数据视图上使用 using 语句? using 语句背后的全部原因是在代码块完成后处置和关闭对象并释放所有资源。也就是说,能够在 using 语句中使用它的唯一要求是它必须实现 IDisposable,DataView 就是这样做的。

编辑 但是,在您的代码示例中,除了不使用 DataView 因为它创建索引时性能略有提高之外应该没有区别,所以如果您不打算使用它的功能,基本上使用 dataview 是一个不必要的额外步骤

【讨论】:

  • @TBohnen 这将如何帮助我回答上述问题。我从来没有问过uses of DataView 或者是我错误地提出了这个问题
  • 我可以从问题中收集到,您不知道为什么要使用返回 DataView 而不是返回 DataTable 的 UsersRepository.GetAllUsers() 的 UsersRepository.GetAllUsers().DefaultView。这解释了为什么你应该使用数据视图而不是普通的数据表。不过,在您的代码示例中,应该没有区别,因此本质上使用数据视图是一个不必要的额外步骤
  • 另外,当你创建一个DataView时,它会创建一个数据的索引,这显然会对性能产生影响,无论是在创建DataTable时创建DefaultView还是在你第一次调用时创建得到,我不知道,但是用反射器很容易找到
  • 酷,它给你答案了吗? :-)
猜你喜欢
  • 2010-10-01
  • 2015-07-22
  • 2012-04-26
  • 2019-02-28
  • 2015-06-27
  • 2017-10-30
相关资源
最近更新 更多