C#LINQ查询子句

查询表达式

用查询语法表示的表达式,由一组类似于SQL的语法编写的句子组成
LINQ查询表达式必须以from子句开头,并且必须以select或group子句结束,中间可以添加多个子句

from子句

from子句指定的数据源类型必须为IEnumerable、Ienumerable或者两者的派生类型

int[] nums = {1,7,6,5,8,4,1,2,11,23};
var list = from num in nums select num;

num表示范围变量,表示数据源中的每一个元素,可任意命名
nums表示的是数据源

复合from子句查询

如果数据源(本身是一个序列)的元素还包含子数据源(如序列、列表等),如果要查询子数据源中的元素,则需要使用复合from子句
示例:

  static void Main(string[] args)
        {
            Student obj1 = new Student()
            {
                StuId = 1001,
                StuName = "人员1",
                ScoreList = new List<int>() { 90, 56, 76 }
            };
            Student obj2 = new Student()
            {
                StuId = 1001,
                StuName = "人员2",
                ScoreList = new List<int>() { 40, 78, 46 }
            };
            Student obj3 = new Student()
            {
                StuId = 1001,
                StuName = "人员3",
                ScoreList = new List<int>() { 20, 88, 46 }
            };
            List<Student> stuList = new List<Student>() { obj1, obj2, obj3 };
            var result = from stu in stuList
                         from sc in stu.ScoreList
                         where sc < 40
                         select stu;
            foreach(var item in result)
            {
                Console.WriteLine(item.StuName);
            }
            Console.ReadKey();
        }

在这里插入图片描述

多个fron子句查询

LINQ查询表达式包含两个或两个以上的独立数据源时,可以使用多个from子句查询所有数据源中的数据
示例:

       static void Main(string[] args)
        {
            Student obj1 = new Student() { StuId = 1001, StuName = "学生1" };
            Student obj2 = new Student() { StuId = 1002, StuName = "学生2" };
            Student obj3 = new Student() { StuId = 1003, StuName = "学生3" };
            Student obj4 = new Student() { StuId = 1004, StuName = "学生4" };
            Student obj5 = new Student() { StuId = 1005, StuName = "学生5" };
            Student obj6 = new Student() { StuId = 1006, StuName = "学生6" };
            List<Student> stuList1 = new List<ConsoleApplication1.Student>() { obj1, obj2, obj3 };
            List<Student> stuList2 = new List<ConsoleApplication1.Student>() { obj4, obj5, obj6 };

            var result = from stu1 in stuList1
                         where stu1.StuId >= 1003
                         from stu2 in stuList2
                         where stu2.StuId >= 1005
                         select new { stu1, stu2 };
            foreach(var item in result)
            {
                Console.WriteLine(item.stu1.StuName+"  "+item.stu1.StuId);
            }
            Console.WriteLine();
            foreach (var item in result)
            {
                Console.WriteLine(item.stu2.StuName + "  " + item.stu2.StuId);
            }
            Console.ReadKey();
        }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code-Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值