2

我们需要检索已排序的项目列表。排序顺序将与项目指南的任意列表相关。即它可能是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# 中使用数据操作。我无法对另一种方法提出很好的打击,所以我不得不承认这是一种有效的方法。

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

4

1 回答 1

4

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

好处显而易见:

  1. 服务器通常是您的应用系统中最强大的机器,所以让我们为它付出努力吧。也因为它被调整为为我们做艰苦的工作。

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

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

于 2013-02-11T08:47:41.203 回答