博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LINQ学习(三):Where子句
阅读量:7120 次
发布时间:2019-06-28

本文共 3878 字,大约阅读时间需要 12 分钟。

说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的 ,而判断条件就是它后面所接的子句。

MSDN解释:where 子句用于查询表达式中,用于指定将在查询表达式中返回数据源中的哪些元素。 它将一个布尔条件("谓词")应用于每个源元素(由范围变量引用),并返回满足指定条件的元素。 一个查询表达式可以包含多个where 子句,一个子句可以包含多个谓词子表达式。

 

Where操作包括3种形式,分别为简单形式、关系条件形式、First()形式。下面分别用实例举例下:

Student.cs

///     /// 学生类    ///     public class Student    {        private int _numid;               private string _name;                private string _sexy;        private int _scroe;        ///         /// 学号        ///         public int NumId        {            get { return _numid; }            set { _numid = value; }        }        ///         /// 姓名        ///         public string Name        {            get { return _name; }            set { _name = value; }        }        ///         /// 性别        ///         public string Sexy        {            get { return _sexy; }            set { _sexy = value; }        }        ///         /// 分数        ///         public int Scroe        {            get { return _scroe; }            set { _scroe = value; }        }    }

测试数据

List
students = new List
() { new Student(){NumId=1,Name="Terry",Sexy="男",Scroe=92}, new Student(){NumId=2,Name="AI",Sexy="男",Scroe=85}, new Student(){NumId=3,Name="Wade",Sexy="男",Scroe=78}, new Student(){NumId=4,Name="Tracy",Sexy="女",Scroe=60}, new Student(){NumId=5,Name="Kobe",Sexy="女",Scroe=50}, };

 

1.简单形式

查询姓名为Terry的学生信息:

var query = from student in students                        where student.Name=="Terry"                        select student;            foreach (var student in query)            {                Console.WriteLine("学号:{0},姓名:{1},性别:{2},分数:{3}",student.NumId,student.Name,student.Sexy,student.Scroe);                //学号:1,姓名:Terry,性别:男,分数:92            }

查询分数大于80的学生姓名:

var query = from student in students                        where student.Scroe > 80                        select student.Name;            foreach (var student in query)            {                Console.WriteLine("姓名:{0}", student);                //姓名:Terry                //姓名:AI            }

 

2.关系条件形式

说明:"与"--"&"和"或"--"&"运算

查询性别为女性并且分数大于等于60的学生信息:

var query = from student in students                        where student.Sexy == "女" && student.Scroe >= 60                        select student;            foreach (var student in query)            {                Console.WriteLine("学号:{0},姓名:{1},性别:{2},分数:{3}", student.NumId, student.Name, student.Sexy, student.Scroe);                //学号:4,姓名:Tracy,性别:女,分数:60            }

 查询学号为01或者分数小于60分的学生信息:

var query = from student in students                        where student.NumId == 1 || student.Scroe < 60                        select student;            foreach (var student in query)            {                Console.WriteLine("学号:{0},姓名:{1},性别:{2},分数:{3}", student.NumId, student.Name, student.Sexy, student.Scroe);                //学号:1,姓名:Terry,性别:男,分数:92                //学号:5,姓名:Kobe,性别:女,分数:50            }

 

3.First()形式

说明:返回集合中的一个元素,其实质就是在SQL语句中加TOP(1),同样的Last()形式也差不多

查询集合中的第一个学生信息:

var student = students.First();            Console.WriteLine("学号:{0},姓名:{1},性别:{2},分数:{3}", student.NumId, student.Name, student.Sexy, student.Scroe);            //学号:1,姓名:Terry,性别:男,分数:92

查询小于80分的集合中的第一个学生信息:

var student = students.First(s => s.Scroe < 80);            Console.WriteLine("学号:{0},姓名:{1},性别:{2},分数:{3}", student.NumId, student.Name, student.Sexy, student.Scroe);            //学号:3,姓名:Wade,性别:男,分数:78

查询小于80分的集合中的最后一个学生信息:

var student = students.Last(s => s.Scroe < 80);            Console.WriteLine("学号:{0},姓名:{1},性别:{2},分数:{3}", student.NumId, student.Name, student.Sexy, student.Scroe);            //学号:5,姓名:Kobe,性别:女,分数:50

 

 

作者:
出处:
欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望你能
推荐
关注
 
 

转载于:https://www.cnblogs.com/ForEvErNoME/archive/2012/07/23/2605630.html

你可能感兴趣的文章
UID 修改 & UID 锁死修复
查看>>
动手实践虚拟网络 - 每天5分钟玩转 OpenStack(10)
查看>>
(转) Deep Learning Resources
查看>>
Node.js 开发模式(设计模式)
查看>>
vs生成命令和属性的宏
查看>>
【Python】supervisor 工具介绍
查看>>
【MySQL】浅谈一致性读
查看>>
浅谈嵌入式软件的未来发展
查看>>
8.4. Socket 方式
查看>>
对于技术焦虑的一点想法
查看>>
Spring3 MVC请求参数获取的几种场景
查看>>
【Win10 应用开发】扫描和连接Wi-fi网络
查看>>
Swift游戏实战-跑酷熊猫 12 与平台的碰撞
查看>>
[20170203]dg磁盘空间不足的处理.txt
查看>>
[20171115]关于逻辑读的疑问.txt
查看>>
使用NAT网关挂载本地物理机
查看>>
[20171124]xxd与通配符.txt
查看>>
6.1、Android Studio的Android Monitor概览
查看>>
HDOJ 2212 DFS
查看>>
我的Android进阶之旅------&gt;Android中编解码学习笔记
查看>>