Linq子查询

 

             NorthwindEntities db = new NorthwindEntities();
            //查找包含a并转换为大写
            List<string> query = (from q in db.Customers select q.CompanyName).ToList();
            //查询长度最短的
            //利用类库中函数
            var query1 = from q1 in query where q1.Length == query.Min(c => c.Length) select q1;
            //注意:q1的作用范围已进入到子查询,所以子查询应重新声明变量
            var query2 = from q1 in query where q1.Length == (from q2 in query orderby q2.Length select q2.Length).First() select q1;
            var query3 = query.Where(q1 => q1.Length == query.OrderBy(q2 => q2.Length).Select(q2 => q2.Length).First());
                       
            //into字句:用于保存临时查询结果.注意,into后面已无法在接from字句了;
            //之前的查询变量经过q1之后,则不可见.这个道理就和lambda中的变量一样,
            //出了作用域,就无法使用了
            List<Customers> queryInto = (from q in db.Customers
                                   where q.CustomerID.Contains("aa")
                                   select q
                                       into q1
                                       where q1.CustomerID.Length > 4
                                       select q1).ToList();


            //let字句:将一个查询字句作为临时表量
            var queryLet = from q in query let xx = from qq in query where qq == "YOYOYO" select qq select q+"_"+xx.First();
            foreach (var str in queryLet)
            {
                Console.WriteLine(str);
            }

            //int[] numbers = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };   //传统下的子查询做法 
            //var query55 = from num in numbers  select num * (from n in numbers  where n % 2 == 0  select n).Count();
            //var query66 = from num in numbers let evenNumbers = from n in numbers where n % 2 == 0 select n select num * evenNumbers.Count(); 
            //foreach (var item in query66) { Console.WriteLine(item); } 
            Console.ReadKey();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LINQ(Language Integrated Query)是.NET框架中的一种查询技术,它提供了一种统一的查询语法,可以用于查询各种数据源,包括集合、数据库、XML等。在LINQ中,可以使用查询表达式或者方法链的方式来进行查询操作。 要查询集合包括子元素集合,可以使用LINQ的嵌套查询功能。嵌套查询是指在查询表达式或者方法链中嵌套另一个查询,以实现对子元素集合的查询。 下面是一个示例,演示如何使用LINQ查询集合包括子元素集合: ```csharp // 假设有一个包含学生信息的类 class Student { public string Name { get; set; } public List<string> Courses { get; set; } } // 创建学生列表 List<Student> students = new List<Student> { new Student { Name = "Alice", Courses = new List<string> { "Math", "English" } }, new Student { Name = "Bob", Courses = new List<string> { "Science", "History" } }, new Student { Name = "Charlie", Courses = new List<string> { "Math", "Physics" } } }; // 使用LINQ查询学生列表中选修了Math课程的学生 var query = from student in students where student.Courses.Contains("Math") select student; // 输出查询结果 foreach (var student in query) { Console.WriteLine(student.Name); } ``` 在上面的示例中,我们创建了一个包含学生信息的类`Student`,其中`Courses`属性是一个子元素集合,表示学生选修的课程。然后我们创建了一个学生列表`students`,包含了几个学生的信息。 接下来,我们使用LINQ查询语法查询了选修了Math课程的学生,通过`where`子句和`Contains`方法来筛选符合条件的学生。最后,我们通过`foreach`循环输出查询结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值