本文中的内容是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