【发布时间】:2015-07-19 00:22:56
【问题描述】:
我有一个使用 LINQ 查询调用的表值函数。
正如我现在所理解的(参考here),排序需要在表值函数之外完成。这意味着,我必须在 LINQ 查询中执行此操作。
我需要一些语法方面的帮助。这是我对该函数的原始调用。
var sourceQuery = (from f in db.fGameListDataTable(competitionID, eventID, participantType)
select f);
我需要从 SQL 查询中获取此自定义排序并将其添加到 LINQ 查询中。
Order By
CASE
WHEN GameType = 'G' THEN '1'
WHEN GroupNumber = '1' THEN '2'
WHEN GroupNumber = '2' THEN '3'
WHEN GroupNumber = '3' THEN '4'
WHEN GroupNumber = '4' THEN '5'
WHEN GameType = 'GT' THEN '6'
WHEN GameType = 'P' THEN '7'
WHEN GameType = 'FT' THEN '8'
END ASC,
g.GameID ASC
更新
对于视觉参考,这是已排序的表格。注意顺序。
【问题讨论】:
-
你控制SQL函数的代码吗?你不能在返回的“表”中添加一个额外的列吗?
-
是的,这是我的职责。你能解释一下额外的列是什么意思吗?
-
也许有什么东西在逃避我,但是你为什么不简单地从数据库函数中返回那个额外的排序列呢?然后你可以简单地根据它进行排序。
-
实际上 - 只是尝试了你的想法。不,这不起作用,因为它不仅仅是为每一列分配一个值。例如,某些记录的 GameType 可能为“G”,并且在 GroupNumber 中为“1”。
-
你可以在.net stackoverflow.com/questions/2013198/…使用表达式的力量
标签: c# sql linq asp-net-mvc-1