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

首頁 > 學院 > 開發設計 > 正文

剛剛接觸的LINQ

2019-11-17 02:19:19
字體:
來源:轉載
供稿:網友

剛剛接觸的LINQ

科普一下:

語言集成查詢(Language INtegrated Query,LINQ)

是一項微軟技術,新增一種自然查詢的SQL語法到.NET Framework的編程語言中,可支持Visual Basic .NET以及C#語言。

LINQ定義了大約40個查詢操作符,如select、from、in、where以及orderby(C#中)。

使用這些操作符可以編寫查詢語句。不過,這些查詢還可以基于很多類型的數據,每個數據類型都需要一個單獨的LINQ類型。

基礎語法:

  • LINQ的關鍵詞:from, select, in, where,groupby, orderby, …
  • LINQ的注意點:必須以select或者是group by 結束。
  • LINQ的寫法:

1)from 臨時變量 in 實現IEnumerable<T>接口的對象

where條件表達式

[orderby條件]

[group by 條件]

select 臨時變量中被查詢的值

2) 實現IEnumerable接口的對象.LINQ方法名(lambda表達式)。如:

stringinput= "hellow world";

intcount= input.Count(w=>w == 'o'); //查詢字母o出現的次數

能夠使用LINQ的對象需要實現IEnumerable<T>接口。并且LINQ的查詢表達式是在一次創建對象時才被編譯的。

  • LINQ的全稱:Language-Integrated Query
  • 命名空間:System.Linq;

  注意:Linq是在.NET Framework 3.5 中出現的技術,所以在創建新項目的時候必須要選3.5或者更高版本,否則無法使用。

  選擇3.5或更高版本的.NET Framework之后,創建的新項目中會自動包含System.Linq的命名空間。

接著看代碼實現:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace LINQ{    public class Category    {        public int Age { get; set; }        public string PRase { get; set; }    }    public class Program    {        static void Main(string[] args)        {            //對數據集合的操作            List<string> names = new List<string> { "Tom", "Jack", "Jim", "Jackson", "Key", "Kitty" };            var nameJ = from n in names where n.StartsWith("J") orderby n select n;            foreach (var name in nameJ)            {                Console.WriteLine(name);            }            Console.WriteLine("-------------------------");            names.Add("Jack1");            names.Add("Jack2");            names.Add("Jack3");            foreach (string name in nameJ)            {                Console.WriteLine(name);            }            Console.WriteLine("-------------------------");                        List<Category> cs = new List<Category>() {                 new Category{Age=22,Prase="13期"},new Category{Age=22,Prase="12期"},new Category{Age=22,Prase="14期"},            new Category{Age=23,Prase="14期"},new Category{Age=20,Prase="13期"},new Category{Age=24,Prase="14期"},            new Category{Age=25,Prase="14期"},new Category{Age=23,Prase="13期"},new Category{Age=25,Prase="14期"}            };            var s = (from s1 in cs where s1.Age > 21 && s1.Prase == "14期" orderby s1.Age descending select s1).Take(3);            foreach (var c1 in s)            {                Console.WriteLine(c1.Age + " " + c1.Prase);            }            Console.WriteLine("-------------------------");            var ss = from s1 in cs                    group s1 by s1.Prase into c                    orderby c.Count() descending, c.Key                    where c.Count() >= 2                    select c.Key + c.Count();            foreach (var s1 in ss)            {                Console.WriteLine(s1);            }            Console.WriteLine("-------------------------");            object[] data = { "hello",33,"what",36,"fine",39,"thanks"};            var str = data.OfType<string>();            foreach (var a in str)            {                Console.WriteLine(a);            }            Console.ReadKey();        }    }}

  

上述代碼除了LINQ查詢語法外,其他都是我們所熟悉的語法,而LINQ查詢語法跟SQL查詢語法很相似,除了先后順序。

  Q:為何 LINQ 查詢語法是以 from 關鍵字開頭的,而不是以 select 關鍵字開頭的?select 開頭這種寫法跟SQL的寫法更接近,更易懂呀?

  A:簡單來說,為了IDE的智能感知(Intelisence)這個功能,select 關鍵字放在后面了。

  其中的 into 關鍵字表示 將前一個查詢的結果視為后續查詢的生成器,這里是跟 group by 一起使用的。

  LINQ中的Group by不要跟 SQL 中的Group by 混淆,SQL由于是二維結構,Group by 的一些邏輯受二維結構的約束,無法像 LINQ 中的Group by 這么靈活。

  事實上,LINQ的查詢語法存在以下兩種形式:

  查詢方法方式:(Methord Syntax)

  主要利用System.Linq.Enumerable類中定義的擴展方法和Lambda表達式方式進行查詢

參考文檔:Lambda 表達式(C# 編程指南):https://msdn.microsoft.com/zh-cn/library/bb397687.aspx

  查詢語句方式:(Query Syntax)一種更接近SQL語法的查詢方式,可讀性更好。

使用優點:

  1、無需復雜學習過程即可上手

  2、編寫更少代碼即可創建完整應用。

  3、更快開發錯誤更少的應用程序。

  4、無需求助奇怪的編程技巧就可合并數據源。

  5、讓新開發者開發效率更高。

  6、任何對象或數據源都可以定制實現Linq適配器,為數據交互帶來真正方便。

函數支持:

支持以下公共語言運行時(CLR) 方法和屬性,因為它們可以在查詢表達式中進行轉換以包含在OData服務的請求 URI 中:

String成員支持的 OData 函數
  Concat  string,concat(string,p0,string,p1)
  Contains  bool,substringof(string,p0,string,p1)
  EndsWith  bool,endswith(string,p0,string,p1)
  IndexOf  int,indexof(string,p0,string,p1)
  Length  int,length(string,p0)
  Replace  string,replace(string,p0,string,find,string,replace)
  Substring  string,substring(string,p0,int,pos)
  Substring  string,substring(string,p0,int,pos,int,length)
  ToLower  string,tolower(string,p0)
  ToUpper  string,toupper(string,p0)
  Trim  string,trim(string,p0)
DateTime成員1支持的 OData 函數
  Day  int,day(DateTime,p0)
  Hour  int,hour(DateTime,p0)
  Minute  int,minute(DateTime,p0)
  Month  int,month(DateTime,p0)
  Second  int,second(DateTime,p0)
  Year  int,year(DateTime,p0)

  1也支持Visual Basic中等效的Microsoft.VisualBasic.DateAndTime的日期和時間屬性以及DatePart方法。

Math成員支持的 OData 函數
  Ceiling  decimal,ceiling(decimal,p0)
  Ceiling  double,ceiling(double,p0)
  Floor  decimal,floor(decimal,p0)
  Floor  double,floor(double,p0)
  Round  decimal,round(decimal,p0)
  Round  double,round(double,p0)
Expression成員支持的 OData 函數
  TypeIs  bool,isof(type,p0)

  客戶端或許還可以在客戶端上計算其他 CLR 函數。對于無法在客戶端上計算以及無法轉換為有效請求URI以便在服務器上計算的任何表達式,將引發NotSupportedException。

參考文檔:在 C# 中編寫查詢 (LINQ):https://msdn.microsoft.com/zh-cn/library/bb397900(v=VS.90).aspx?lc=2052


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97香蕉超级碰碰久久免费的优势| 亚洲精品福利在线观看| 久久色在线播放| 国产精品国产自产拍高清av水多| 亚洲精品电影网在线观看| 日韩国产精品一区| 欧美一级视频在线观看| 欧美一级淫片videoshd| 欧美亚洲免费电影| www.亚洲一二| 亚洲综合一区二区不卡| 国产97在线观看| 欧美人与性动交| 91av福利视频| 欧美日韩日本国产| 日韩av黄色在线观看| 欧美在线视频播放| 96pao国产成视频永久免费| 国产精品久久久久久超碰| 亚洲天堂色网站| 日韩高清中文字幕| 欧美中在线观看| 亚洲精品中文字幕女同| 88国产精品欧美一区二区三区| 久热在线中文字幕色999舞| 欧美色视频日本高清在线观看| 日本一区二区在线播放| 久久人人爽人人爽人人片亚洲| 久久综合国产精品台湾中文娱乐网| 国产精品中文在线| 久久久久久久激情视频| 日本乱人伦a精品| 成人免费午夜电影| 91精品国产91久久久久久不卡| 亚洲视频欧洲视频| 日韩美女在线观看一区| 国产精品海角社区在线观看| 国产一区二区丝袜| 成人激情视频在线| 日韩不卡在线观看| 国产精品高潮呻吟久久av黑人| 久久精品国产欧美亚洲人人爽| 国产在线视频欧美| 久久久久久av| 国产999精品视频| 日韩女优人人人人射在线视频| 91成品人片a无限观看| 国产精品中文字幕在线| 亚洲精品电影在线| 国产成人免费av| 国产一区二区三区三区在线观看| 欧美肥婆姓交大片| 欧美亚洲另类激情另类| 免费不卡在线观看av| 久久99精品久久久久久青青91| 久久久亚洲精品视频| 国产98色在线| 91精品国产综合久久久久久蜜臀| 成人网在线免费看| 成人做爰www免费看视频网站| 91亚洲精品在线观看| 在线亚洲午夜片av大片| 欧美中文字幕在线视频| 亚洲精品久久久久| 亚洲精品福利视频| 久久婷婷国产麻豆91天堂| 中文字幕在线视频日韩| 色综合久久久久久中文网| 性欧美视频videos6一9| 欧美中文在线视频| 日韩不卡中文字幕| 亚洲第一视频网站| 国产va免费精品高清在线| 久久夜精品香蕉| 国产婷婷97碰碰久久人人蜜臀| 国产成人精品日本亚洲| 在线看日韩av| 欧美午夜电影在线| 国产精品成人品| xxav国产精品美女主播| 精品动漫一区二区三区| 97成人在线视频| 亚洲最大福利视频| 欧美性一区二区三区| 国产精品热视频| 欧美大肥婆大肥bbbbb| 欧美性xxxxxx| 国产有码在线一区二区视频| 中文字幕日韩欧美| 午夜精品一区二区三区在线视| 日韩视频免费观看| 91福利视频在线观看| 国产精品久久久999| 美女久久久久久久久久久| 国产一区二区丝袜高跟鞋图片| 中国china体内裑精亚洲片| 久久人91精品久久久久久不卡| 亚洲aⅴ男人的天堂在线观看| 久久久久国产精品www| 亚洲综合在线小说| 尤物精品国产第一福利三区| 一本色道久久88综合亚洲精品ⅰ| 亚洲色图第一页| 欧美日韩国产成人在线| 精品日韩视频在线观看| 久久精品影视伊人网| 国产成人精品电影久久久| 国产一区二区久久精品| 欧美高清在线视频观看不卡| 国产亚洲精品日韩| 日韩最新免费不卡| 久久久久久美女| 国产精品久久久久久久一区探花| 国产又爽又黄的激情精品视频| 亚洲天堂av电影| 91九色精品视频| 国产精品视频自拍| 亚洲美女在线视频| 98视频在线噜噜噜国产| 成人中文字幕+乱码+中文字幕| 欧美裸体xxxx极品少妇软件| 亚洲精品久久久久中文字幕欢迎你| 在线观看视频99| 日韩欧美在线视频观看| 亚洲欧美在线第一页| 欧美成人精品一区二区| 亚洲视频第一页| 成人在线一区二区| 欧美性猛交xxx| 欧美日韩成人网| 97视频在线观看免费| 久久中文字幕在线视频| 亚洲а∨天堂久久精品喷水| 国产精品18久久久久久麻辣| 91在线色戒在线| 亚洲精品欧美日韩专区| 777777777亚洲妇女| 亚洲精品欧美日韩| 欧美午夜片欧美片在线观看| 欧美激情精品久久久久久蜜臀| 国产高清在线不卡| 国产亚洲精品久久久久久777| 97超级碰碰碰久久久| 黑人狂躁日本妞一区二区三区| 久久久久久久久久婷婷| 日韩国产欧美精品一区二区三区| 精品国产老师黑色丝袜高跟鞋| 亚洲精品欧美一区二区三区| 国产精品女主播| 美女视频久久黄| 国产成人福利夜色影视| 97精品国产91久久久久久| 欧美激情第99页| 亚洲福利在线观看| 亚洲综合日韩中文字幕v在线| 日韩欧美在线免费观看| 日韩精品在线播放| 亚洲精品日韩欧美| 欧美精品精品精品精品免费| www.美女亚洲精品| 91av中文字幕| 亚洲欧美日韩国产精品| 亚洲精品国产精品国自产在线| 亚洲黄色有码视频|