在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#中进行数据操作。我无法想出一个好的方法来对付另一种方法,所以我不得不承认这是一种有效的方法。
这里有什么缺点?(当然,除了明显的注射,这对我们来说不是问题。幸运的是,我们不需要担心安全问题。)
我个人会选择以数据库为中心的解决方案。如果我需要对数据进行排序或分页,我几乎总是尝试在DB服务器端进行(通常使用SQL
和/或StoredProcedures
)。
好处显而易见:
-
服务器是通常是你的应用程序系统中最强大的机器,所以让我们给它辛勤的工作。也因为它被调整为为为我们做艰苦的工作。
-
在服务器上准备的一次性数据,有时意味着它也减少了大小(过滤或提取的具体页面),因此传输到客户端的数据量大大减少,这有利于用户更快的响应时间。
如果你一次获取所有内容(正如你所提到的),至少,那么第一点仍然是你可以考虑的。