在SQL语句中排序之前,始终首选LINQ

本文关键字:LINQ 语句 SQL 排序 | 更新日期: 2023-09-27 17:58:42

我们需要检索一个排序的项目列表。排序顺序将与项目指南的任意列表相关。也就是说,它可能是1,2,3,4以及3,7,2,4

我们既没有使用LINQ to SQL,也没有使用存储过程。

我建议我们按照SQL Server提供的顺序获取列表,并在C#代码中使用LINQ对其进行排序。

另一种选择是创建这样的字符串(遵循本技巧)。

select * from publishers
Order by (CASE City
 WHEN 'Paris'    THEN 1
 WHEN 'Chicago'  THEN 2
 WHEN 'Boston'   THEN 3
 WHEN 'New York' THEN 4
 ELSE 100 END) ASC, City DESC

我必须承认,这种方法有一定的简洁性,但我真的更喜欢在C#中进行数据操作。我无法想出一个好的方法来对付另一种方法,所以我不得不承认这是一种有效的方法。

这里有什么缺点?(当然,除了明显的注射,这对我们来说不是问题。幸运的是,我们不需要担心安全问题。)

在SQL语句中排序之前,始终首选LINQ

我个人会选择以数据库为中心的解决方案。如果我需要对数据进行排序或分页,我几乎总是尝试在DB服务器端进行(通常使用SQL和/或StoredProcedures)。

好处显而易见:

  1. 服务器是通常是你的应用程序系统中最强大的机器,所以让我们给它辛勤的工作。也因为它被调整为为为我们做艰苦的工作。

  2. 在服务器上准备的一次性数据,有时意味着它也减少了大小(过滤或提取的具体页面),因此传输到客户端的数据量大大减少,这有利于用户更快的响应时间。

如果你一次获取所有内容(正如你所提到的),至少,那么第一点仍然是你可以考虑的。