Dapper:来自Query的动态OrderBy(“columnName”)(“TSQL”,...,commandType:CommandType.StoredProcedure)

时间:2012-03-28 00:28:22

标签: c# linq dynamic dapper

如何从函数中对查询结果进行排序:

public IEnumerable<dynamic> SelectTsql(object parameters)
{
        using (var Connection = new SqlConnection(ConnectionString))
        {
            Connection.Open();
            var dynamicpar = new DynamicParameters(parameters);
            return Connection.Query("[dbo].[tsql]", dynamicpar, commandType: CommandType.StoredProcedure);
        }
}

var unsorted = SelectTsql();
var sorted = unsorted.OrderBy("column");

我不知道编译时的列名,列名来自SQL(MSSQL)。

因为它不是普通的SELECT * FROM dbo.table,Dapper最后可以添加ORDER BY,但存储过程和返回类型是IEnumerable<dynamic>我的数据排序有问题(在C#上)。

[dbo]. [tsql]返回一个表格,我希望按照LINQ列的方式对结果进行排序,并将名称指定为函数OrderBy的字符串。

修改

变量sorted用作MVC3 Action中网格(Dojox)的JSON数据源。

[HttpGet]
public ActionResult Json(string sortcolumn)
{
    var writer = new JsonWriter();
    var data = SelectTsql( new { foo = 1 } );
    var sorted = data.OrderBy(sortcolumn);
    var json = writer.Write(sorted);

    return Content(json, "application/json");
}

当我们显示网格时,将从数据库中检索列名称(在网格中)。在网格中选择列标题时,会使用用于排序的变量。

我知道这不是最佳的,因为json包含所有列,我现在只显示其中的一些,但这不是重点。

0 个答案:

没有答案