这里是我的控制器的示例片段:
public ViewResult Index(int id)
{
var viewModel = new IssueFileIndexViewModel();
viewModel.IssueFile = db.IssueFiles.Include(i => i.Issue).Where(i => i.Id == id).ToList();
return View(viewModel);
}
以下是视图中的我的WebGrid:
@{
var grid = new WebGrid(source: Model.IssueFile,
rowsPerPage: 15,
canPage: true,
canSort: true,
fieldNamePrefix: "gridItems_",
pageFieldName: "inside",
selectionFieldName: "selectedRow"
);
@grid.GetHtml(tableStyle: "hovered",
columns: grid.Columns(
grid.Column(
columnName: "Volume",
header: "Volume"
),
grid.Column(
columnName: "Number",
header: "Number"
),
)
)
}
这里有一个样例表,我想按数量和数量进行排序:
我怎样才能按卷上升和数字下降来分类呢?如下所示:
我希望我说得很清楚。:(
-编辑--
以下是我的查询:
SELECT Id, Volume, Number from IssueFiles WHERE Id = @0id
ORDER BY
CASE WHEN ISNUMERIC(Volume) = 1
THEN
Volume
ELSE
CASE
WHEN ISNUMERIC(SUBSTRING(Volume, 0, 10)) = 1
THEN
CAST(SUBSTRING(Volume, 0, 10) AS INT)
WHEN ISNUMERIC(SUBSTRING(Volume, 0, 9)) = 1
THEN
CAST(SUBSTRING(Volume, 0, 9) AS INT)
WHEN ISNUMERIC(SUBSTRING(Volume, 0, 8)) = 1
THEN
CAST(SUBSTRING(Volume, 0, 8) AS INT)
WHEN ISNUMERIC(SUBSTRING(Volume, 0, 7)) = 1
THEN
CAST(SUBSTRING(Volume, 0, 7) AS INT)
WHEN ISNUMERIC(SUBSTRING(Volume, 0, 6)) = 1
THEN
CAST(SUBSTRING(Volume, 0, 6) AS INT)
WHEN ISNUMERIC(SUBSTRING(Volume, 0, 5)) = 1
THEN
CAST(SUBSTRING(Volume, 0, 5) AS INT)
WHEN ISNUMERIC(SUBSTRING(Volume, 0, 4)) = 1
THEN
CAST(SUBSTRING(Volume, 0, 4) AS INT)
WHEN ISNUMERIC(SUBSTRING(Volume, 0, 3)) = 1
THEN
CAST(SUBSTRING(Volume, 0, 3) AS INT)
WHEN ISNUMERIC(SUBSTRING(Volume, 0, 2)) = 1
THEN
CAST(SUBSTRING(Volume, 0, 2) AS INT)
WHEN ISNUMERIC(SUBSTRING(Volume, 0, 1)) = 1
THEN
CAST(SUBSTRING(Volume, 0, 1) AS INT)
WHEN ISNUMERIC(SUBSTRING(Volume, 0, 0)) = 1
THEN
CAST(SUBSTRING(Volume, 0, 0) AS INT)
END
END
ASC, Number ASC;
我现在的问题是如何将它转换为LINQ查询。请帮帮我!谢谢!
发布于 2014-02-12 03:26:06
尝试在检索中添加一个订单:
viewModel.IssueFile = db.IssueFiles.Include(i => i.Issue).Where(i => i.IssueID == _IssueID).Order(i => i.Volume).ToList()
https://stackoverflow.com/questions/21725825
复制相似问题