iT邦幫忙

1

如何排序JSON資料

  • 分享至 

  • xImage

小弟寫了一個簡單的撈MSSQL資料的API
完全照著SQL的順序撈出來
最新的資料都在最後面
想要做一個簡單的排序,把最新的資料放在第一筆(倒序),但不知道怎麼寫SORT
抓SQL的API C# CODE

public class Alarm_EventController : ApiController
    {
        public object Get() {
            using (appapidataEntities entities = new appapidataEntities()) {

                        var SQLjsonndata = entities.Alarm_Event.ToList();

                         return new
                {
                    Alarm_Event = SQLjsonndata
                };
            }
        }
dragonH iT邦超人 5 級 ‧ 2019-05-13 11:38:23 檢舉
詳細見下方
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
暐翰
iT邦大師 1 級 ‧ 2019-05-13 12:22:44
最佳解答

想要做一個簡單的排序,把最新的資料放在第一筆(倒序)

EF可以使用LINQ OrderByDescending 系統會幫你轉SQL Order by desc

public class Alarm_EventController : ApiController
{
	public object Get() {
    	using (appapidataEntities entities = new appapidataEntities()) {
    		var SQLjsonndata = entities.Alarm_Event.OrderByDescending(o=>o.Al_start_Time).ToList();
    		return new{Alarm_Event = SQLjsonndata};
    	}        
    }
}

舉例:

看更多先前的回應...收起先前的回應...

謝謝你的解說及回應!嘗試你的做法成功了!所以這個用法是以SQL的時間來當作ID幫我做排序嗎?

我還有另一個疑問,因為現在SQL有時間欄位可抓,那如果日期+時間欄位是分開的要怎麼辦呢
例如這樣子
https://ithelp.ithome.com.tw/upload/images/20190513/201155823oh4elPRVS.png

dragonH iT邦超人 5 級 ‧ 2019-05-13 13:18:06 檢舉

呃 那個 Al_start_Time 應該是你當初寫進資料庫的欄位

不是SQL自己產生的吧

LINQ兩個cloumns排序

(原本想說沒有相關function的話

就把兩個串起來轉成可以排序的timestamp之類的

當然 這還是js的思維XD)

對,那個是我資料庫的欄位

dragonH
感謝你,學會了!!

dragonH iT邦超人 5 級 ‧ 2019-05-13 13:30:34 檢舉

我覺得時間這種資料最好是以timestamp的格式存

之後要什麼時間格式再從他轉就好

排序之類的操作會比較靈活

0
dragonH
iT邦超人 5 級 ‧ 2019-05-13 11:39:18

MSSQL應該也有 order by 的 查詢吧

連結

ps.話說留言不能用markdown語法嗎/images/emoticon/emoticon06.gif


回應你的標題 - 如何排序JSON資料

我只會js的方法

如果你有前端web的話可以參考

codepen

const datas = [
  {
    time: 99999,
    name: 'Jack',
  },
  {
    time: 66666,
    name: 'Lily',
  },
  {
    time: 77777,
    name: 'Hank',
  },
  {
    time: 88888,
    name: 'Alan',
  },
  {
    time: 22222,
    name: 'Ryan'
  }
];
console.log(datas);
const result = datas.sort((a, b) => {
  return a.time > b.time
    ? 1
    : -1;
});
console.log(result);

想要由舊到新的話

將判斷件改為

  return a.time < b.time
    ? 1
    : -1;

C#後端可以參考看這個是不是你要的

小魚 iT邦大師 1 級 ‧ 2019-05-13 11:41:36 檢舉

也對,
既然是資料庫撈的,
SQL語法就可以排序了.

因為不熟悉SQL語法,所以想從WEB API這端下手,但是不知道怎麼寫,大大以上的寫法還是看不太懂/images/emoticon/emoticon02.gif

froce iT邦大師 1 級 ‧ 2019-05-13 12:32:18 檢舉

我也是想說JS的sort比較好寫。XD

我要發表回答

立即登入回答