LINQ-let子句、join子句
1.Let子句
let子句用于在LINQ表达式中存储子表达式的计算结果,既let子句创建一个范围变量来存储结果,变量被创建后,不能修改或把其他表达式的结果重新赋值给它。此范围变量可以在后续的LINQ中使用
static void Main(string[] args) { //数据源 List<Custom> my = new List<Custom>() { new Custom() {name="杜伟",Age=30,Table="13166856811" }, new Custom() { name="王玥",Age=33,Table="1259445545"} }; var query = from a in my //这里面的g存储的是杜和王 let g = a.name.Substring(0, 1) //select g; select a; foreach (var item in query) { Console.WriteLine("姓名{0},姓名{1},电话{2}",item.name,item.Age,item.Table); //Console.WriteLine(item); } Console.ReadKey(); }
//where customer.Name.Substring(0, 1) == "郭" || customer.Name.Substring(0, 1) =="黄"
2.Join子句
Join子句用来连接两个数据源,即设置两个数据源之间的关系,join子句支持一下3中常见连接方式。
内部连接:要求两个数据源都必须存在相同的值,即两个数据源必须存在满足连接关系的元素,类似于SQL语句中的inner Join 子句。
分组连接:包含into子句的join子句。
左外部连接:元素的连接关系必须满足连接中的左数据源,类似于SQL语句中的left Join子句。
实例:
static void Main(string[] args) { //定义两个数据源 int[] arr = { 0,1,2,3,4,5,6,7,8,9}; int[] arr1 = {2,4,6,8 }; var quey = from a in arr //内连接。根SQL一样 只是多了一个equals(相等,同样的) join b in arr1 on a equals b where a > 7 select a; foreach (var item in quey) { Console.WriteLine(item); } Console.ReadKey(); }