asp.net LINQ vs Datatable

时间:2010-01-11 08:41:52

标签: asp.net linq datatable

我在asp.net页面中有一个datagrid。还有网格的过滤器和搜索按钮。 我有以下可能的编码选项:

  1. 在存储过程中为网格应用过滤器。
  2. 获取网格的所有数据并使用LINQ应用过滤器+搜索文本。
  3. 获取数据表中网格的所有数据,并将过滤器+搜索文本应用为数据表过滤器。
  4. 我无法确定哪种编码方式最好。此外,我使用3层架构,因此无法确定哪种铺设最适合应用滤镜。

2 个答案:

答案 0 :(得分:1)

  
    

2.获取网格的所有数据并使用LINQ

应用过滤器+搜索文本   

当您使用LINQ并拥有远程数据源时,您可以使用IQuerable 您描述了构建表达式树时所需的==> 被解释(在您的情况下为SQL)(比较IEnumerable vs I Queryable

我的投票:因此尝试使用Linq因为它有一些优点 a)类型安全 b)我的经验是,LINQ可以帮助您创建良好的结构化解决方案,其中包含Take(10).OrderBy(xx).Skip(30)

等装饰器

我发现的缺点是你对创建SQL的控制较少,你需要花一些时间进行调优......

NutShell中的好书c#3.0 LinqPad LINQ in Action

答案 1 :(得分:0)

如果您有大量数据,则在数据库中应用过滤器(仅选择所需的确切记录数)或在数据库查询中应用过滤器是个好主意。例如,如果你有300万条记录,并且你一次只显示50条记录,只加载你需要的50条记录,并使用LINQ .Skip()。Take()方法到页面是一个好主意。如果您决定使用存储过程,那也是可行的,并且SP在LINQ和DataTable中工作。

过滤器可能更难在数据库之外应用;这可以在数据表或LINQ中轻松实现。这取决于应用过滤器需要多么容易或多难,无论它们是否可以轻松应用于数据库查询,还是需要通过加载所有数据并循环遍历代码隐藏中的过滤器。

无论你是使用DataTables还是LINQ,都是一种可行的方法。 LINQ是更新的技术,并且留在这里; DataSets将会存在一段时间,但不要指望任何新的数据集功能,因为ADO.NET Entity Framework是新的数据集。

希望这有任何意义。