iT邦幫忙

0

c# [{a1,b1,c1},{a2,b2,c2},{a3,b3,c3}] =>[{a1,a2,a3},{b1,b2,b3},{c1,c2,c3}]

c#
  • 分享至 

  • xImage

如題,想請問有沒有好一點的作法
因為最多就只會三筆
目前想到一筆一筆塞,想說最多就9行,但感覺實在太笨了

目前前端會傳來的架構如下,回傳來一個交易明細List<TransDetail>

    public class TransDetail 
    {
        /// <summary>
        /// 收費日
        /// </summary>
        public string paidDate { get; set; }

        /// <summary>
        /// 金額
        /// </summary>
        public string paidAmount { get; set; }

        /// <summary>
        /// 費用類型
        /// </summary>
        public string billType { get; set; }
    }

但後臺打到API server需要的是
https://ithelp.ithome.com.tw/upload/images/20200103/20120596N9vn7UZkcW.png

想請問有什麼好的做法嗎?

code iT邦新手 5 級 ‧ 2020-01-03 14:56:16 檢舉
如果回傳固定的話,直接抓 size 然後 for 迴圈 應該可以解決
ice bear iT邦新手 4 級 ‧ 2020-01-03 15:58:08 檢舉
抓size跑for迴圈我有想過
如果三組要的是para[0]-para[2],跑迴圈的時候還能用index
但現在他要para0-para2,是不是要一個一個指定的意思,迴圈該怎麼做呢?
石頭 iT邦高手 1 級 ‧ 2020-01-04 10:00:26 檢舉
TransDetail這個類別變成集合當作API的參數嗎?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
gn00044255
iT邦新手 5 級 ‧ 2020-01-03 15:22:49

後台正規劃後才會好寫

ice bear iT邦新手 4 級 ‧ 2020-01-03 15:43:49 檢舉

這個案子只有要做前台,我們是多墊了一層算是中台來做這些資料的處理,後台的Server在對方那裡

0
米歐
iT邦新手 3 級 ‧ 2020-01-03 16:29:17

如果名稱固定,可以用反射解決問題,但還是像 gn00044255 大大說的正規化比較好。

可以參考官方 Type 的使用方式。

ice bear iT邦新手 4 級 ‧ 2020-01-03 18:13:16 檢舉

HI 米歐 大大你好
我去找了你說的反射用法
Detail是有para0、para1、para2的class(我想要用來存第一到三次的費用、繳費日和費用類型)

            Detail paidDateDetail = new Detail();
            Detail paidAmountDetail = new Detail();
            Detail billTypeDetail = new Detail();

            int index = 0;
            var type = typeof(Detail);
            foreach (TransDetail tptd in rqModel.transDetail)
            {
                var paraInfo = type.GetProperty("para" + index.ToString());

                // 裡面的第一個參數是表示要對該實體進行操作
                paraInfo.SetValue(paidDateDetail, tptd.paidDate);
                paraInfo.SetValue(paidAmountDetail, tptd.paidAmount);
                paraInfo.SetValue(billTypeDetail, tptd.billType);

                index++;
            }

寫出大概是這樣
最後大概是要把paidDateDetail、paidAmountDetail、billTypeDetail個別JSON序列後塞進要傳入後台的para0、para1、para2中

米歐 iT邦新手 3 級 ‧ 2020-01-03 18:45:28 檢舉

看起來方向是對的,JSON的處理就要看你用哪一套框架開發,基本上網路都有現成的API使用,傳入後台的para0, para1, para2也只是類別的屬性名稱而已。

米歐 iT邦新手 3 級 ‧ 2020-01-03 18:51:43 檢舉

順帶一提,反射是會有效能上的損失,但好處就像你現在的Code,讓你感覺乾淨許多。

我要發表回答

立即登入回答