1.Where子句
where子句的作用就是篩選元素,除了開始喝結束位置,where子句幾乎可以出現在LINQ表達式的任意位置。一個LINQ表達式中可以有Where子句,也可以沒有;可以有一個,可以有多個;多個where子句之間的關系相當於邏輯“與”,每個where子句可以包含1個或多個邏輯表達式,這些條件成為“謂詞”,多個謂詞之間用布爾運算符隔開,比如邏輯“與”用&&,邏輯“或”用||,而不是SQL中的and或or
類 namespace LINQ { class Custom { public string name { get; set; } public int Age { get; set; } public List<string> Table { get; set; } } }
class Program { static void Main(string[] args) { List<Custom> my = new List<Custom>() { new Custom() { name="杜偉",Age=23,Table=new List<string> { "13166856811","17644045820"} }, new Custom() { name="王玥",Age=30,Table=new List<string>(){"13526485597","145326689751" } } }; var b = from a in my //篩選字符串長度為2 與名字開頭有杜的 where(a.name.Length==2&&a.name.Substring(0,1)=="杜") select a; foreach (var item in b) { Console.WriteLine("姓名{0},年齡{1}",item.name,item.Age); foreach (var item1 in item.Table) { Console.WriteLine(" 電話{0}",item1); } } Console.ReadKey(); }
2.select子句
例子:最簡單select就是直接輸出from子句建立的那個范圍變來那個;
static void Main(string[] args) { int[] a = {0,1,2,3,4,5,6,7 ,8,9}; var qury = from c in a select c; foreach (var item in qury) { Console.WriteLine(item); } Console.ReadKey(); }
例2:對查詢結果進行投影(轉換)。下面查詢表達式查詢arr數組中的每一個元素,查詢結果轉換為一個集合對象的兩個屬性值:ID和Name,它在select子句中由匿名對象初始化器創建。每一個對象的ID屬性的值是當前元素的值、Name屬性的值為元素的值的字符串的表現形式。
static void Main(string[] args) { int[] a = {0,1,2,3,4,5,6,7 ,8,9}; var qury = from c in a //使用匿名初始化器創建集合,select可以理解成要顯示的格式 select new {id=c,name=c.ToString() }; foreach (var item in qury) { Console.WriteLine(item.id+"張"+item.name); } Console.ReadKey(); }