首页 > 解决方案 > 如何对存储过程的结果进行排序并返回js?

问题描述

    if (gameName.Contains("Game1"))
    {
        using (var conn = new SqlConnection(SessionWrapper.BackOfficeSecondaryDbConnectionString))
        {
            var query = @"crm_Game_category";
            var param = new DynamicParameters();
            param.Add("@DateFrom", dateFrom, dbType: DbType.DateTime);
            param.Add("@DateTo", dateTo, dbType: DbType.DateTime);
            param.Add("@Sort", 1);
            var GameReport = conn.Query<GameLogCategoryReportModel>(query, param, commandType: CommandType.StoredProcedure);
            if (GameReport.Count() > 0)
            {
                foreach (var GameLog in GameReport)
                {
                    result.Add(GameLog);
                }
            }
        }
    }

    if (categoryName.Contains("Game2"))
    {
        using (var conn = new SqlConnection(SessionWrapper.BackOfficeSecondaryDbConnectionString))
        {
            var query = @"crm_Game_CSOfficer";
            var param = new DynamicParameters();
            param.Add("@DateFrom", dateFrom, dbType: DbType.DateTime);
            param.Add("@DateTo", dateTo, dbType: DbType.DateTime);
            param.Add("@Sort", 2);
            var GameReport = conn.Query<GameLogCategoryReportModel>(query, param, commandType: CommandType.StoredProcedure);

            if (GameReport.Count() > 0)
            {
                foreach (var GameLog in GameReport)
                {
                    result.Add(GameLog);
                }
            }
        }
    }


    if (categoryName.Contains("Game3"))
    {
        using (var conn = new SqlConnection(SessionWrapper.BackOfficeSecondaryDbConnectionString))
        {
            var query = @"crm_CallLog_Game_FCR";
            var param = new DynamicParameters();
            param.Add("@DateFrom", dateFrom, dbType: DbType.DateTime);
            param.Add("@DateTo", dateTo, dbType: DbType.DateTime);
            param.Add("@Sort", 3);
            var GameReport = conn.Query<GameLogCategoryReportModel>(query, param, commandType: CommandType.StoredProcedure);

            if (GameReport.Count() > 0)
            {
                foreach (var GameLog in GameReport)
                {
                    result.Add(GameLog);
                }
            }
        }
    }
    return JsonConvert.SerializeObject(result.OrderBy(x => x.Sort));



public class GameLogCategoryReportModel
{
    public string Category { get; set; }
    public int Sort { get; set; }
}

我希望结果显示 Game1 Game2 Game3

我这样做是为了按顺序对所有 3 个存储过程进行排序。但它不会按顺序改变。我也试过result.Sort()了,但我也得到了同样的结果。是否有任何错误,因为我尝试在存储过程中使用 order by,但它仍然无法正常工作。您还有其他方法可以建议吗?

标签: c#jsonsql-server

解决方案


您需要根据排序结果创建一个新列表。这应该可以解决问题

return JsonConvert.SerializeObject(result.OrderBy(x => x.Sort).ToList());

推荐阅读