LINQ-Where子句与select子句
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(); }