【发布时间】:2017-04-25 10:14:43
【问题描述】:
我有一个包含超过 80 万条记录的 SQL 表,这些记录需要在 25 个结果的页面中显示在 Web 上。我需要能够从表中搜索和排序这些结果,但由于表太大,我无法在过滤/排序之前将所有结果拉到 IEnumerable 中(我之前这样做过并且它有效,但现在令人难以置信初始拉动速度慢)。
我已经弄清楚了搜索,但排序真的把我弄乱了。我花了几个小时研究它,但在 .Skip().Take() 之前找不到任何可行的解决方案。
我需要能够做这样的事情:
string sortField = "Name"; //just for example
string sortDirection = "descending"; //also for example
List<People> = (from s in db.People
orderby sortField sortDirection
select s).Skip((page - 1) * pageSize).Take(pageSize).ToList();
People 中的可排序列可以是 DateTime、int 或字符串,所以我尝试做类似的事情
orderby (
currentSort == "Name" ? s.Name :
currentSort = "SignUpDate" ? s.SignupDate : s.Id
)
徒劳无功,因为程序抱怨混合类型。
有什么可以做的吗?提前感谢任何帮助或线索!
【问题讨论】:
-
您是按单列排序吗?
-
是的,一次只有一列
-
您订购的列是否有索引?
标签: c# linq model-view-controller linq-to-entities