亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中Linq查詢基本操作使用實例

2020-01-24 02:59:55
字體:
來源:轉載
供稿:網友

摘要:本文介紹Linq查詢基本操作(查詢關鍵字)

- from 子句

- where 子句

- select子句

- group 子句

- into 子句

- orderby 子句

- join 子句

- let 子句

- 復合from子句

- 在某些情況下,源序列中的每個元素本身可能是序列(集合),也可能包含序列

- 用語訪問單個數據庫中的內部集合

- 使用多個from字句執行連接

- 可以包含多個可從獨立數據源生成補充查詢的from字句

復合(顧名思義就是有多from的字句)實例:

復制代碼 代碼如下:

class Program
{ static void Main(string[] args)
    {
        List<Student> students = new List<Student> { new Student
            {
                LastName="xiaogui",Scores=new List<int>{97,42,91,60}}, new Student
                {
                    LastName="xiaozhan",Scores=new List<int>{50,92,81,60}}, new Student
                    {
                        LastName="xiaolan",Scores=new List<int>{32,32,81,90}}, new Student
                        {
                            LastName="xiaowan",Scores=new List<int>{92,22,81,60}},        
        }; var query = from stuent in students from score in stuent.Scores where score > 90 select new {
                        Last = stuent.LastName,
                        score
                    }; foreach (var student in query)//大于90分的顯示出來   {
            Console.WriteLine("{0} Score:{1}", student.Last, student.score);
        }
        Console.ReadLine();
    }
}

復制代碼 代碼如下:

public class Student
{ public string LastName { get; set; } public List<int> Scores { get; set; }
} public class Employee
{ public string First { get; set; } public string Last { get; set; } public int ID { get; set; }
}

執行結果: xiaogui Score:97

              xiaogui Score:91

              xiaozhan Score:92

              xiaowan Score:92

let 關鍵字(使用let字句擴展范圍變量)

- 創建一個可以查詢自身的可枚舉類型

- 使查詢只能對范圍變量word調用一次ToLower。

如果不使用let,則必須在where字句的每個謂詞中調用ToLower

例:把每個單詞開頭包含a或者e的找出來

復制代碼 代碼如下:

using System; using System.Linq; public class Test
{ static void Main(string[] args)
    { string[] strings = { "A penny saved is a penny earned.", "The aaxly sdj", "the pa is no" }; var query = from sentence in strings
                    let words = sentence.Split(' ')//用空格分割成數組  from word in words
                    let w = word.ToLower()//把每個字母小寫  where w[0] == 'a' || w[0] == 'e' select word; foreach (var s in query)
        {
            Console.WriteLine(s);
        }
        Console.ReadLine();
    }
}

where 關鍵字 (篩選)

- 一個查詢表達式可以包含多個where字句

例:(把包含a的找出來)

復制代碼 代碼如下:

using System; using System.Linq; public class Test
{ static void Main(string[] args)
    { string[] str = { "a", "b", "c" }; var query = from s in str where s == "a" select s; foreach (var s in query)
        {
            Console.WriteLine(s);
        }
        Console.ReadLine();
    }
}

orderby 關鍵字 (排序)

- 在查詢表達式中,orderby字句可以使返回的序列(組)按升序或降序。

- 可以指定多個鍵,以便執行一個或多個次要排序操作

- 默認排序順序為升序

- 編譯時,orderby字句被轉換為對OrderBy方法的調用。orderby字句中的多個鍵被轉換為ThenBy方法調用

descending 降序

ascending 升序

例1:升序

復制代碼 代碼如下:

using System; using System.Linq; public class Test
{ static void Main(string[] args)
    { string[] str = { "a", "b", "c" }; var query = from s in str orderby s ascending select s;
    }
}

結果為: a b c

例2:降序

復制代碼 代碼如下:

using System; using System.Linq; public class Test
{ static void Main(string[] args)
    { string[] str = { "a", "b", "c" }; var query = from s in str orderby s descending select s;
    }
}

結果為: c b a

group 關鍵字 (分組)

- group 字句返回一個IGrouping(TKey,Telement)對象序列 

- 編譯時,group子句被轉換為對GroupBy方法的調用

(LINQ查詢表達式可以以select或者Group結束) (如果想要對每個組執行附加查詢操作,則可以使用into上下文關鍵字指定一個臨時標識符,使用into時,必須繼續編寫該查詢,并最終用一個select語句或另一 個group子句結束該查詢)

例:

復制代碼 代碼如下:

using System; using System.Linq; public class Test
{ static void Main(string[] args)
    { string[] str = { "aa", "bb", "cc", "dd" }; var query = from s in str
                    group s by s[0]
                        into p where p.Key == 'a' || p.Key == 'b' || p.Key == 'c' orderby p.Key descending select p.Key; foreach (var s in query)
        {
            Console.WriteLine(s);
        }
        Console.ReadLine();
    }
}

結果為: c b a

說明: group s by s[0] into p 意思是針對范圍變量s用“s[0]”分組,本例中是用第一個字母分組

join 關鍵字 (聯接)

- 使用join 子句可以將來自不同源序列并且在對象模型中沒有直接關系的元素相關聯

- 唯一的要求是每個源中的元素需要共享某個可以進行比較以判斷是否相等的值

- join字句使用特殊的equals關鍵字比較指定的鍵是否相等

三中常見的連接類型

- 內部聯接

- 分組聯接

- 左外部聯接

1.內部聯接

復制代碼 代碼如下:

var query = from a in str
join b in str2 on a.id equals b.id select new { Aname = a.name, Bname = b.name };

2.分組聯接:(into 可以將join暫存起來)

復制代碼 代碼如下:

var query = from a in str
join b in str2 on a.id equals b.id
into c select new {Aname=a.name,Cs=c}

3.左外部聯接

- 在左外部聯接中,將返回左則源序列中所有元素,即使它們在右則序列中沒有匹配的元素也是如此。

- 若要在LINQ中執行左外部聯接,請將DefaultifEmpty方法與分組聯接結合起來,以指定要在某個左則元素不具有匹配元素時產生的默認右則元素??梢允褂胣ull作為任何引

用類型的默認值,也可以指定用戶定義的默認類型。

復制代碼 代碼如下:

var query = from category in categories
join prod in products on category.id equals prod.CategoryID
into prodGroup from item prodGroup.defaultifEmpty( new Product{Name=string.empty,CategoryID=0}) select new {CatName=category.Name,ProdName=item.Name}

equalse 運算符

- join 子句執行同等聯接。換句話說,只能基于兩個鍵之間的相等關系進行匹配

- 為了表明所有聯接都是相等聯接,join子句使用equals關鍵字而不是==運算符

復合鍵

- 使用復合鍵可以測試多個值是否相等

select 關鍵字 選擇

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产视频亚洲精品| 久久精品中文字幕一区| 播播国产欧美激情| 最好看的2019的中文字幕视频| 成人精品久久av网站| 欧美日韩免费网站| 91视频国产一区| 91精品在线播放| 亚洲精品一区久久久久久| 亚洲天堂av电影| 亚洲天堂av网| 中文字幕亚洲一区二区三区| 亚洲男人天堂2023| 日本电影亚洲天堂| 亚洲成人动漫在线播放| 国产精品青草久久久久福利99| 久热精品视频在线| 91福利视频在线观看| 欧美亚洲成人网| 91国在线精品国内播放| 欧美色视频日本版| 中文字幕在线亚洲| 久久青草精品视频免费观看| 日韩在线中文字幕| 欧美国产在线视频| 亚洲人成电影在线| 亚洲男人第一av网站| 久久色在线播放| 日韩欧美高清视频| 精品成人乱色一区二区| 日韩一区二区欧美| 国产精品7m视频| 中文字幕日韩欧美精品在线观看| 91大神福利视频在线| 成人免费看吃奶视频网站| 欧美国产日本在线| 久久久免费av| 国产精品欧美在线| 久久免费视频在线观看| 亚洲人av在线影院| 最近免费中文字幕视频2019| 蜜臀久久99精品久久久久久宅男| 国产精品永久免费在线| 日韩av免费在线观看| 美女999久久久精品视频| 国产精品观看在线亚洲人成网| 国产精品一区二区三区久久| 日韩欧美精品网站| 欲色天天网综合久久| 欧美激情视频网址| 最新国产成人av网站网址麻豆| 91视频国产精品| 国产一区二区三区欧美| 琪琪亚洲精品午夜在线| 国产精品久久久久久久久久免费| 亚洲精品自产拍| 亚洲精品美女在线| 亚洲一区二区福利| 九九精品视频在线| 中文字幕精品影院| 一区二区三区精品99久久| 色妞欧美日韩在线| 亚洲精品国产精品国自产在线| 在线看欧美日韩| 色综合久久悠悠| 亚洲97在线观看| 欧美一区二区视频97| 丝袜一区二区三区| 日本最新高清不卡中文字幕| 国产欧美久久久久久| 亚洲国产精品99久久| 亚洲精品久久久一区二区三区| 亚洲国产欧美在线成人app| 久久久最新网址| 久久九九免费视频| 欧美另类xxx| 亚洲黄色片网站| 精品视频在线观看日韩| 欧美亚洲视频在线看网址| 国产91热爆ts人妖在线| 亚洲跨种族黑人xxx| 欧美自拍视频在线观看| 国产日韩av在线| 在线观看久久久久久| 亚洲aⅴ日韩av电影在线观看| 91精品在线一区| 97人人模人人爽人人喊中文字| 日韩激情av在线免费观看| 精品女同一区二区三区在线播放| 欧美—级a级欧美特级ar全黄| 国产精品视频男人的天堂| 日韩在线精品一区| 51ⅴ精品国产91久久久久久| 97在线视频国产| 性欧美xxxx视频在线观看| 亚洲视频在线观看| 国产精品自产拍在线观看中文| 夜夜嗨av一区二区三区四区| 538国产精品视频一区二区| 国产精品麻豆va在线播放| 亚洲精品二三区| 久久九九亚洲综合| 91精品久久久久久综合乱菊| 亚洲欧美日韩久久久久久| 在线观看欧美日韩| 国产精品美女免费| 91极品视频在线| 日本久久中文字幕| 国模叶桐国产精品一区| 国产精品久久中文| 亚洲成色www8888| 91chinesevideo永久地址| 亚洲伊人久久综合| 亚洲日本中文字幕| 91精品国产乱码久久久久久蜜臀| 亚洲人成电影在线观看天堂色| 欧美性xxxx在线播放| 538国产精品一区二区在线| 欧美激情一区二区三区高清视频| 国内精品一区二区三区| 日韩久久精品电影| 国产有码在线一区二区视频| 国产亚洲激情在线| 日韩av色综合| 亚洲一区亚洲二区亚洲三区| 91av在线网站| 伊人久久久久久久久久久| 中文字幕亚洲欧美一区二区三区| 亚洲人午夜色婷婷| 国产男女猛烈无遮挡91| 国产成人亚洲综合91| 久久久精品久久久| 国产一区二区香蕉| 欧美丰满少妇xxxxx做受| 国产精品美腿一区在线看| 欧美丰满少妇xxxxx| 一色桃子一区二区| 另类色图亚洲色图| 在线精品国产成人综合| 色婷婷亚洲mv天堂mv在影片| 久久久中精品2020中文| 日韩欧美黄色动漫| 欧美国产日本在线| 亚洲成人动漫在线播放| 日本不卡高字幕在线2019| 国产精品夜色7777狼人| 国产日韩专区在线| 国产成人av在线| 国产精品亚洲美女av网站| 国产精品1区2区在线观看| 午夜精品久久久久久久99热| 国产在线不卡精品| 国产综合色香蕉精品| 久久91超碰青草是什么| 精品免费在线观看| 亚洲人成电影网站色www| 欧美激情亚洲视频| 国产精品网红直播| 欧美疯狂做受xxxx高潮| 国产激情久久久久| 久久69精品久久久久久久电影好| 国产成人精品久久二区二区| 国产成人黄色av| 精品亚洲va在线va天堂资源站|