發表文章

目前顯示的是有「C#」標籤的文章

C# - Linq - DataTable刪除重複項/DataTable調整篩選

C# - Linq - DataTable刪除重複項/DataTable調整篩選  有時候DataTable資料重覆要刪掉 大部分的教學都透過DataTable 轉 DataView 再使用 DataView 的ToTable功能帶True 例如: 有個內容重複的Table1 透過下面兩行即可獲得不重複的Table1   DataView DataView1= Table1.DefaultView; Table1 = DataView1.ToTable(true); 這個做法沒問題,但在資料量大概2萬筆的時候             大概要等1分鐘的處理吧... 慢到哭哭 所以後來改了寫法 透過Linq處理不用一秒 真是很快樂 Table1 = Table1 .AsEnumerable().GroupBy(p => p["姓名"]).SelectMany(p => p.GroupBy(s => s["身分證字號"]).SelectMany(ps => ps.GroupBy(l => l["出生年月"])).Select(x => x.First())).CopyToDataTable<DataRow>(); 這段就是在做將Table1之中 姓名與身分證字號與出生年月都相同的資料,僅保留一份 也就達成了不重複資料! 外加如果要根據某列的結果篩選出新的Table可以這樣寫 Table1 = Table1 .AsEnumerable().Where(q => q.Field<string>("性別") != "F").CopyToDataTable<DataRow>(); 這段是會篩選出列名稱[性別]中的資料不為F的列 快樂提升效能吧XD

C# - dict轉成DataTable / 字典轉DataTable /dict to DataTable

C# - dict轉成DataTable / 字典轉DataTable /dict to DataTable  dicSubData是一個自行設定的字典變數 先建立DataTable 這邊因為程式簡單,為了方便就直接使用static, 若程式架構需要考慮耦合請自行改寫 Static DataTable dtData = new DataTable(); 要轉成DataTable 首先需要填入DataTable 的Columns 這邊就用dicSubData的Key來填                  foreach (var colName in dicSubData.Keys)               {                                             dtData .Columns.Add(colName, typeof(string));                                     }                     DicToTable(dicSub Data ,  dtData  ); 填完Columns之後再來就是要把全部字典內容丟進去 寫了一個方法          public static void DicToTable(Dictionary<str...

C# - json轉字典 - 取得字典中的陣列再轉字典/解析字典內容 / json to dict

C# - json轉字典/取得字典中的陣列再轉字典/解析字典內容/ json to dict  由於C#不能像python一樣 即使json轉成dict之後內含list 也可以直接使用for迴圈遍歷一層一層 或是直接透過dict[key][index]這種語法取得list的內容 為了取得子資料轉成DataTable 想了解法 假設json取得資料如下 { "code":"0","message":"Success","ans": [ {"code":"1","Test": [           {"Num":"107","Age":"50","Fit":"C"},{"Num":"107","Age":"40","Fit":"C"}                             ]                     },{"code":"12","Test2": [ {"Num":"108","Age":"60","Fit":"CH"}                             ]                         }           ] } 就是dict->list->dict->list->dict 網路上找不到甚麼優良漂亮的解法 所以我就真的不管,照著這個邏輯寫下去了XD 根據上一篇透過webapi接收json的最後一行   Dictionary<string, object> dicJson = JsonTo...

C# - WebApi - 串接WebApi帶key帶header帶body - 傳值帶鍵值 / 回傳josn轉字典

C# - 串接WebApi帶key帶header帶body / 傳值帶鍵值 / 回傳josn轉字典  一直以來都沒用過C#做這一塊資料的接收 因為用python實在太方便 剛好最近在公司用到C#做串接 發現自己連怎麼帶key都不會哈哈哈... 整個研究完之後就記錄起來分享 假設對方要求的格式如下: 呼叫時請加入Header Content-Type: Application/Json api-key: 123 傳入值範例 { "Alable":"2020", "Blable":"test",     "Clable":"1", } 以下程式碼是 發出post請求 帶ContentType,Headers                using Newtonsoft.Json;                string url = "API連結";             string key = "要帶的key";             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);             request.Method = "POST";             request.ContentType = "Application/Json";             request.Headers.Add("api-key", key);             var postData =             ...

C# -ArrayList - Random-打亂陣列/亂數不重複/亂數陣列

C# -ArrayList - Random-打亂陣列/亂數不重複/亂數陣列 此篇不是撲克牌洗牌法,因為使用上覺得效能與結果都不是很好, 撲克牌洗牌一次換兩個,陣列大的時候換了感覺得沒有很乾淨。 所以自己找了另一個方式,打亂陣列的順序。 這個方式是透過 ArrayList 的特性與 Random 。 此範例會令產生一個新的陣列,若要變回原陣列名稱請自行加程式。 邏輯說明 ArrayList 是可動態增減陣列範圍 透過這樣的方式每次隨機Random 一個index 按照這個index在ArrayList取值另存給新的陣列後將該值從ArrayList中刪掉。 則得到的新陣列是原來陣列的打亂。 程式碼 static ArrayList list = new ArrayList(); static String[] Test = new String[10000]; static String[] NewTest = new String[10000]; for (int i = 1; i < 10001; i++) { Test[i]=i.ToString();//先創造原始字串陣列1~10000 } for (int i = 0; i < 10000; i++) { list.Add(i); }//這邊先創造一個ArrayList list 把原始陣列Test的內容都加進去 //即你原始陣列長度有多少,這個list就要有多少 for (int i = 0; i < 10000; i++) { Random Rnd = new Random(); //必須先new Random int r = Rnd.Next(0, list.Count); NewTest[i] = Test[(int)list[r]];//list 是一個物件型別需轉成int,並將list隨機index的值存給NewTest list.RemoveAt(r);//將list這個index的值刪除 } for (int i = 0; i < 10000; i++) { Console.Write(NewTest[i]); //Test是原...