本文中的內容是3個學習LINQ寫時的代碼段函數
場景1:對打亂順序的詩句進行排序學習
按DataTable的列Number,對DataTable中的行進行排序,最後按序輸出Content列spa
/// <summary> /// 場景1:對打亂順序的詩句進行排序 /// </summary> public static void Scene1() { //數據源 DataTable dt = new DataTable(); dt.Columns.Add("Number"); //序號 dt.Columns.Add("Content"); //詩句 //打亂順序的詩句 dt.Rows.Add("0", "《詩·商頌·玄鳥》"); dt.Rows.Add("9", "景員維河,殷受命咸宜,百祿是何。"); dt.Rows.Add("2", "古帝命武湯,正域彼四方。"); dt.Rows.Add("7", "邦畿千里,維民所止,肇域彼四海。"); dt.Rows.Add("4", "商之前後,受命不殆,在武丁孫子。"); dt.Rows.Add("5", "武丁孫子,武王靡不勝。"); dt.Rows.Add("6", "龍旂十乘,大糦是承。"); dt.Rows.Add("3", "方命厥後,奄有九有。"); dt.Rows.Add("8", "窈窕淑女,琴瑟友之。"); dt.Rows.Add("1", "天命玄鳥,降而生商,宅殷土芒芒。"); //按順序排列詩句 IEnumerable<string> array = from n in dt.AsEnumerable() orderby int.Parse(n["Number"].ToString()) ascending select n["Content"].ToString(); //輸出結果 foreach (var v in array) { Console.WriteLine(v); } }
場景2:將分放在兩個DataTable中的詩句合併爲一首詩code
按DataTable中的列Number,對兩個DataTable中合併後的詩句進行排序,並按序輸出合併後的Content列的內容排序
/// <summary> /// 場景2:將分放在兩個DataTable中的詩句合併爲一首詩 /// </summary> public static void Scene2() { //數據源1 DataTable dt1 = new DataTable(); dt1.Columns.Add("Number"); //序號 dt1.Columns.Add("Content"); //詩句 DataTable dt2 = dt1.Clone(); //數據源2 //把一首詩的詩句分放到兩個數據源中 dt1.Rows.Add("0", "《詩·王風·黍離》"); dt2.Rows.Add("1", "彼黍離離,彼稷之苗。行邁靡靡,中心搖搖。"); dt1.Rows.Add("2", "知我者,謂我心憂;不知我者,謂我何求。"); dt2.Rows.Add("3", "悠悠蒼天,此何人哉?"); dt1.Rows.Add("4", "彼黍離離,彼稷之穗。行邁靡靡,中心如醉。"); dt2.Rows.Add("5", "知我者,謂我心憂;不知我者,謂我何求。"); dt1.Rows.Add("6", "悠悠蒼天,此何人哉?"); dt2.Rows.Add("7", "彼黍離離,彼稷之實。行邁靡靡,中心如噎。"); dt1.Rows.Add("8", "知我者,謂我心憂;不知我者,謂我何求。"); dt2.Rows.Add("9", "悠悠蒼天,此何人哉?"); //合併,按順序將兩個數據源的詩句合併 IEnumerable<string> array = from n1 in dt1.AsEnumerable().Concat(dt2.AsEnumerable()) orderby int.Parse(n1["Number"].ToString()) ascending select n1["Content"].ToString(); //輸出結果 foreach (var v in array) { Console.WriteLine(v); } }
場景3:將分放在兩個DataTable中的詩句逐句拼接string
將每句詩分紅三部分,前一個數據源有前兩部分,後一個數據源有後兩部分(中間那部分兩個數據源都有),從兩個數據源中讀出每句詩,並輸出it
/// <summary> /// 場景3:將分放在兩個DataTable中的詩句逐句拼接 /// </summary> public static void Scene3() { Console.WriteLine("《詩·小雅·鹿鳴》"); //數據源1 DataTable dt1 = new DataTable(); dt1.Columns.Add("Number"); //序號 dt1.Columns.Add("Content1"); //詩句片斷1 dt1.Columns.Add("Content2"); //詩句片斷2 dt1.Rows.Add("0", "呦呦鹿鳴,", "食野之苹。我有嘉賓,"); dt1.Rows.Add("1", "吹笙鼓簧,", "承筐是將。人之好我,"); dt1.Rows.Add("2", "呦呦鹿鳴,", "食野之蒿。我有嘉賓,"); dt1.Rows.Add("3", "視民不恌,", "君子是則是效。我有旨酒,"); dt1.Rows.Add("4", "呦呦鹿鳴,", "食野之芩。我有嘉賓,"); dt1.Rows.Add("5", "鼓瑟鼓琴,", "和樂且湛。我有旨酒,"); DataTable dt2 = new DataTable(); dt2.Columns.Add("Content2"); //詩句片斷2 dt2.Columns.Add("Content3"); //詩句片斷3 dt2.Rows.Add("食野之苹。我有嘉賓,", "鼓瑟吹笙。"); dt2.Rows.Add("承筐是將。人之好我,", "示我周行。"); dt2.Rows.Add("食野之蒿。我有嘉賓,", "德音孔昭。"); dt2.Rows.Add("君子是則是效。我有旨酒,", "嘉賓式燕以敖。"); dt2.Rows.Add("食野之芩。我有嘉賓,", "鼓瑟鼓琴。"); dt2.Rows.Add("和樂且湛。我有旨酒,", "以燕樂嘉賓之心。"); //合併:詩句片斷1+詩句片斷2+詩句片斷3 IEnumerable<string> array = from n1 in dt1.AsEnumerable() from n2 in dt2.AsEnumerable() where n1["Content2"].ToString() == n2["Content2"].ToString() select ( n1["Content1"].ToString() + n1["Content2"].ToString() + n2["Content3"].ToString()); //輸出結果 foreach (var v in array) { Console.WriteLine(v); } }
Main函數調用class
static void Main(string[] args) { Console.WriteLine("============="); Scene1(); Console.WriteLine("============="); Scene2(); Console.WriteLine("============="); Scene3(); Console.WriteLine("============="); Console.ReadLine(); }
運行結果foreach
ENDselect