創作內容

14 GP

C# LINQ

作者:貓貓風 ฅ●ω●ฅ│2017-06-25 22:36:43│巴幣:28│人氣:633
.











LINQ 個人認為是一個很方便的功能,可以把複雜的判斷式用簡單的描述即可達成相同效果

如果了解SQL語法就會覺得基本上是一樣的東西,結構上雷同(Select From Where)

只是陳述的順序有點不同,以下直接看範例了解比較快

此範例會隨機產生10個成員的集合,每個成員分別有編號、名稱、職業

然後當按下Query時,會按三種不同條件組合分別呈現從集合中查詢的結果

Source Code
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9.   
  10. namespace LINQTest  
  11. {  
  12.     public partial class Form1 : Form  
  13.     {  
  14.         List<group> _group = new List<group>();  
  15.         private string[] _name = new string[]
  16.         "Abigail","Adela","Alexia","Bblythe","Camille","Cornelia",  
  17.         "Darlene","Edith","Erica","Eve"};  
  18.         private string[] _member_class = new string[] { "magician", "warrior", "Knight" };  
  19.   
  20.         public Form1()  
  21.         {  
  22.             InitializeComponent();  
  23.         }  
  24.   
  25.         private void Form1_Load(object sender, EventArgs e)  
  26.         {  
  27.             generate_dropdownList();  
  28.             generate_member();  
  29.         }  
  30.         private void generate_dropdownList()  
  31.         {
  32.             for (int i = 0; i <= _name.Length - 1; i++)  
  33.             {  
  34.                 this.comboBox1.Items.Add(new combobox(_name[i], _name[i]));  
  35.             }  
  36.             this.comboBox1.SelectedIndex = 0;  
  37.   
  38.             for (int i = 1; i <= _name.Length; i++)  
  39.             {  
  40.                 this.comboBox2.Items.Add(new combobox(i.ToString(), i.ToString()));  
  41.             }  
  42.             this.comboBox2.SelectedIndex = 0;  
  43.   
  44.             for (int i = 0; i <= _member_class.Length - 1; i++)  
  45.             {  
  46.                 this.comboBox3.Items.Add(new combobox(_member_class[i],
  47.                  _member_class[i]));  
  48.             }  
  49.             this.comboBox3.SelectedIndex = 0;  
  50.         }  
  51.   
  52.         private void generate_member()  
  53.         {  
  54.             Random r = new Random();  
  55.             for(int i = 1; i<= 10 ; i++)  
  56.             {  
  57.                 group member = new group(); //建立新成員  
  58.                 member.no = i;  
  59.                 member.name = _name[r.Next(0,10)];  
  60.                 member.member_class = _member_class[r.Next(0, 3)];  
  61.                 _group.Add(member); //將成員加入List中  
  62.                 richTextBox4.Text += "NO"+member.no+" name: "+member.name+" Class:
  63.                 "+member.member_class+"\n";  
  64.             }  
  65.   
  66.         }  
  67.   
  68.         private void query()  
  69.         {  
  70.             richTextBox1.Text = "";  
  71.             richTextBox2.Text = "";  
  72.             richTextBox3.Text = "";  
  73.             combobox CB1 = (combobox)this.comboBox1.SelectedItem;  
  74.             combobox CB2 = (combobox)this.comboBox2.SelectedItem;  
  75.             combobox CB3 = (combobox)this.comboBox3.SelectedItem;  
  76.   
  77.             var find = from data in this._group  //從 _group中尋找data  
  78.                        where data.name == CB1.value //條件為 name = 輸入值  
  79.                        select data; //找出資料  
  80.             foreach (var item in find)  
  81.             {  
  82.                 richTextBox1.Text += "name:" + item.name + " NO" + item.no +  
  83.                 "\n" + "========================" + "\n";  
  84.   
  85.             }  
  86.   
  87.             find = from data in this._group  
  88.                    where (data.no >= Int32.Parse(CB2.value) && data.name == CB1.value)  
  89.                    select data;  
  90.   
  91.             foreach (var item in find)  
  92.             {  
  93.                 richTextBox2.Text += "name:" + item.name + " NO" + item.no +  
  94.                 "\n" + "========================" + "\n";  
  95.             }  
  96.             //從 _group中尋找data  
  97.             find = from data in this._group  
  98.                    //條件為 NO >= 輸入值 且 member_class = 輸入值    
  99.                    where (data.no >= Int32.Parse(CB2.value) &  
  100.                    data.member_class == CB3.value)  
  101.                    //找出資料  
  102.                    select data;  
  103.   
  104.             foreach (var item in find)  
  105.             {  
  106.                 richTextBox3.Text += "name:" + item.name + " NO" + item.no + " Class:" +
  107.                 item.member_class +  
  108.                 "\n" + "========================" + "\n";  
  109.   
  110.             }  
  111.         }  
  112.   
  113.         private void btn_query_Click(object sender, EventArgs e)  
  114.         {  
  115.             query();  
  116.         }  
  117.   
  118.         private void button1_Click(object sender, EventArgs e)  
  119.         {  
  120.             richTextBox4.Text = "";  
  121.             _group.Clear();  
  122.             generate_member();  
  123.         }  
  124.     }  
  125. }  

執行結果

搜索條件1為:  姓名為Abigail 的所有成員

搜索條件2為: 姓名為Abigail  且 編號 大於等於 5 的所有成員

搜索條件3為:  編號大於等於5 且 職業為騎士的成員




引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3621669
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:涼涼風|C#

留言共 3 篇留言

珀伽索斯(Ama)
基瑟斯,C語言是我的痛,這個我根本沒學好,看到就Orz[e27]

06-25 22:44

貓貓風 ฅ●ω●ฅ
這是比C高階的語言 叫作C# 跟 JAVA 比較像喔~06-25 22:47
小刀
好厲害的說~

06-26 13:27

貓貓風 ฅ●ω●ฅ
刀姊過獎了><06-26 13:30
昭君出塞因地制宜
路過,收藏個^^

06-29 00:08

貓貓風 ฅ●ω●ฅ
好喔 歡迎 感謝捧場^^06-29 00:11
我要留言提醒:您尚未登入,請先登入再留言

14喜歡★s1234567 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:arduino LCD ... 後一篇:arduino Step...

追蹤私訊切換新版閱覽

作品資料夾

lin881205大家
小屋不定期更新冷門西洋歌曲推廣與Reddit鬼故事翻譯唷!看更多我要大聲說5小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】