Linq中where查询

C# Linq查询、where 扩展查询以及QueryExpression分页查询 C# 常用的三种查询方式 阅读详情

一、LINQ的基本语法包含如下的8个上下文关键字,这些关键字和具体的说明如下:

关键字说明
from指定范围变量和数据源
where根据bool表达式从数据源中筛选数据
select指定查询结果中的元素所具有的类型或表现形式
group对查询结果按照键值进行分组(IGrouping<TKey,TElement>)
into提供一个标识符,它可以充当对join、group或select子句结果的引用
orderby对查询出的元素进行排序(ascending/descending)
join按照两个指定匹配条件来Equals连接两个数据源
let产生一个用于存储查询表达式中的子表达式查询结果的范围变量


where子句,它是LINQ表达式的元素筛选机制,除了开始和结束的位置,它几乎可以出现在LINQ表达式的任意位置上。


在一个LINQ表达式中,可以有where子句,也可以没有;可以有一个,也可以有多个;多个where子句之间的逻辑关系相当于逻辑“与”,每个where子句可以包含1个或多个bool逻辑表达式,这些条件成为谓词,谓词逻辑之间用的是“&&”“||”等而不是SQL中的and 、

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

 

1.简单形式:

例如:使用where筛选在伦敦的客户

var q =
    from c in db.Customers
    where c.City == "London"
    select c;


2.关系条件形式:

 筛选库存量在订货点水平之下但未断货的产品:

var q =
    from p in db.Products
    where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued
    select p;

下面这个例子是调用两次where以筛选出UnitPrice大于10且已停产的产品。

var q =
    db.Products.Where(p=>p.UnitPrice > 10m).Where(p=>p.Discontinued); 


3.First()形式:

返回集合中的一个元素,其实质就是在SQL语句中加TOP (1)。

 

简单用法:选择表中的第一个发货方。

Shipper shipper = db.Shippers.First();

元素:选择CustomerID 为“BONAP”的单个客户

Customer cust = db.Customers.First(c => c.CustomerID == "BONAP");

条件:选择运费大于 10.00 的订单:

Order ord = db.Orders.First(o => o.Freight > 10.00M);

 

二、C#中对linq的应用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_WHERE
{
    /**//// <summary>
    /// LINQ where子句
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            //1常见的where语句
            List<GustInfo> gList = new List<GustInfo>() 
            {
                new GustInfo(){ Name="DebugLZQ", Age=26,Tel="88888888"},
                new GustInfo(){ Name="cnblogs",Age=6,Tel="666666"},
                new GustInfo(){ Name="M&MSoft",Age=9,Tel="55555"}
            };

            var query = from gust in gList
                        where (gust.Name.Length > 7 || gust.Name.Substring(0, 1) == "M") && gust.Age > 9
                        select new { gust.Name, gust.Age };
            foreach (var g in query)
            {
                Console.WriteLine("{0},{1}", g.Name, g.Age);
            }

            Console.ReadKey(false);

            //2.在where子句中使用自定义函数
            var query2 = from GustInfo gust in gList
                         where gust.Name.Length > 5
                         && Check(gust.Name)
                         select gust;
            foreach (var g in query2)
            {
                Console.WriteLine("{0},{1},{2}", g.Name, g.Age, g.Tel);
            }
            Console.ReadKey(false);

            //3.动态谓词的筛选
            //定义动态谓词数组,在实际开发中可以动态获得
            string[] names = { "SB","XXX","***","@@@","一些敏感词"};

            var query3 = from GustInfo guest in gList
                         where !names.Contains(guest.Name)
                         select guest;

            foreach (var q in query3)
            {
                Console.WriteLine("{0} 年龄:{1},电话:{2}",q.Name,q.Age,q.Tel );
            }
            Console.ReadKey(false);
        }

        //自定义函数
        static bool Check(string name)
        {
            if (name.Substring(0, 1) == "N")
                return false;
            return true;
        }
    }
}


程序的运行结果如下:           ......           ...       ...


转自:http://www.studyofnet.com/news/269.html

C#-linq实战003-查询-Where Where语句检查符合条件的元素,并返回新的迭代器 1:基于谓词筛选值序列 IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) 1.1:foreach解析: //IEnumerable<TSource> Where<TSource>(this IEnume 阅读详情

相关推荐

C# linq查询 where tolist用法(一看就懂 )

参考文档 https://blog.youkuaiyun.com/u011127019/article/details/114163247 3. 获取列表 ToList() //查询 //根据where 条件 if (_context.ModelA.Any(q => q.ID == 1)) { } _context.ModelA.Where(q => q.Name.Contai...

chenggong9527的博客 1916

Linq----lambda表达式之where and orderby

int[] arr = { -32, 53, 5, -34, 56, 45, 34, 5, -34, 45, 2, 3, 6 }; var query = arr.Where((num, index) =&gt; num &gt; num * index); foreach (var item in query) ...

hhw199112的博客 2471

VS2022如何兼容老项目?.NET Framework 4.0/4.5安装避坑指南

本文提供了在Visual Studio 2022中兼容和维护.NET Framework 4.0/4.5等老旧项目的完整解决方案。针对VS2022无法直接识别旧框架的核心问题,文章详细剖析了原因,并重点推荐通过官方NuGet包安全获取引用程序集的方法,给出了从下载、解压到部署至标准目录的详细步骤。同时,文章还深入探讨了项目文件格式过旧、NuGet包还原失败等进阶问题的排查与解决策略,旨在帮助开发者高效、稳定地在现代开发环境中维护历史代码库。

weixin_27734811的博客 515

EF 相关问题:Linq的where条件如何在循环中写OR

问题描述: EF中我要:查询表A,实现条件:where 或..或..或.. 传统的方法是: var q = from a in db.A where a.a==1 || a.a==2 || a.a==3 select a 但是当如果where条件中“或”关系的个数不确定,且是动态的,怎么办? 【解决方法】 步骤一: 添加静态类,扩展where

iceagezh的专栏 7148

Django 前后端分离实战:网络设备运维系统 - 从登录认证到业务模块

这篇文章分享了Django+Vue前后端分离开发网络设备运维系统的实战经验,重点介绍了登录认证、全局布局和设备管理三大模块的实现。文章包含以下核心内容: 登录模块实现:包括表单验证、Token认证、记住密码功能,以及美观的UI设计(渐变背景、毛玻璃效果) 全局布局架构:采用侧边栏+顶部导航的响应式设计,支持菜单权限控制和多设备适配 业务功能开发:详细展示了设备分类和部门管理的CRUD功能实现,包括列表展示、搜索过滤、分页等功能 常见问题解决:提供了5个开发中常见问题的解决方案,如Vue Router警告、C

qq_16766705的博客 526

【Web攻防】SQLMap实战进阶:从数据猜解到高权限渗透的全流程指南

本文介绍了SQLMap工具在Web安全渗透测试中的实战应用,重点讲解了数据猜解、高权限操作、复杂请求提交、Tamper脚本开发和指纹绕过等核心场景。文章提供了可直接复用的命令示例,包括数据库信息获取、文件读写、命令执行等操作,并详细说明了POST/JSON/Cookie注入的实现方法。同时,介绍了Tamper脚本的开发模板和指纹伪装技巧,帮助降低检测风险。最后强调SQLMap在自动化渗透全链路中的价值,从漏洞发现到权限提升的完整流程,并提供了优化测试效率的实用建议。所有技术内容仅限合法授权场景使用。

YsChunQiu777的博客 441

linq中的where条件拼接

where条件拼接

five_s的博客 4441

EFR32无线SoC开发指南:从环境搭建到性能优化

物联网边缘设备开发中,无线SoC芯片的选择与开发环境配置是关键第一步。EFR32作为Silicon Labs推出的多协议无线SoC系列,配合Simplicity Studio IDE,为开发者提供了完整的解决方案。本文以EFR32xG22开发套件为例,详细介绍开发环境搭建、工程创建、硬件配置等核心环节,特别针对RAILtest示例工程进行深入解析。通过实际案例演示如何配置无线参数、优化低功耗模式,并分享串口终端交互、吞吐量测试等实战技巧。对于开发者常见的问题如设备识别失败、无线通信异常等,提供了系统化的排查

weixin_30342363的博客 353

linq where 中两个条件

linq     where 中两个条件  是否可用 or  and || && 这类的      可用  ||   && 这类的

dingxingmei的专栏 6467

09、Flutter FFI Dart Native API

本文介绍了 Dart Native API 的基本用法,解决了 Dart 与 C 异步通讯的问题

eieihihi的专栏 4400

【乐企-工具篇】生成发票左上角二维码

【代码】【乐企-业务篇】生成发票左上角二维码。

九七的博客 708

C# LINQ重载Where 查询条件,Where条件启用判断

【代码】C# LINQ重载Where 查询条件,Where条件启用判断。

weixin_49652725的博客 221

基于Simulink环境,提供一个关于如何对无人机电源DC-DC变换器进行仿真建模的示例

无人机电源要求:无人机的各个子系统(如电机、传感器、通信模块等)可能需要不同级别的电压供应。重要性稳定性:稳定的电源是保证无人机各部件正常工作的基础。效率:高效的电源管理可以显著增加飞行时间和任务执行能力。挑战多负载适应性:需要能够为不同负载提供合适的电压和电流。动态响应:快速响应负载变化的能力对于维持系统稳定性至关重要。首先明确要模拟的任务内容。设计一个能够在不同负载条件下为无人机提供稳定电压的DC-DC变换器。根据无人机的工作状态调整控制策略以维持最佳性能。

xiaoheshang_123的博客 136

Linq.J Where条件查询:灵活过滤数据技巧

还在为Java集合数据过滤而烦恼?面对复杂的业务筛选需求,传统的for循环和if判断让代码变得冗长难维护?Linq.J的Where条件查询功能为你提供了一套优雅、强大的数据过滤解决方案,让数据处理变得简单高效! 读完本文,你将掌握: - ✅ 15种Where条件查询方法的完整用法 - ✅ 复杂业务场景下的条件组合技巧 - ✅ 空值处理和边界条件的优雅解决方案 - ✅ 性能优化和最佳实践指南 ...

gitblog_00999的博客 949

Flink Web UI 如何使用和调试保姆级教程(持续更新)

Running Jobs(运行中的作业):显示正在运行的所有 Flink 作业的列表。每个作业都有一个独特的 Job ID,可以点击进入查看作业的详细信息。Completed Jobs(已完成的作业):显示已经完成或取消的作业列表。:显示当前集群中所有 TaskManager 的健康状态,包括 CPU 使用率、内存使用情况、Slot 数量等。Job Manager Configuration(JobManager 配置):显示 JobManager 的一些配置参数,帮助调试和优化 Flink 集群。

大模型大数据攻城狮的专栏 3992

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LINQ之查询语法--where子句

where子句非常简单,它的语法跟SQL的语法很像,但是有几点需要注意的: 1) 判断相等应该用”==”而不是”=” 2) 逻辑与应该用”&&” 而不是and 3) 逻辑或应该用”||”而不是or 4) 一个查询表达式可以包含多个where条件 5) where 子句除了第一句和最后一句外,可以出现在查询表达式的任何地方 where子句非常简单,我们看2个例子就好...

weixin_30551947的博客 512

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C#中对linq where查询的应用

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LINQ_WHERE { /**//// /// LINQ where子句 /// class Program { static void Mai

学习也休闲 3543

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

EFcore 6.0 LINQ查询left join、group by、where综合查询

代码】EFcore6.0LINQ查询leftjoin、groupby、where综合查询。

tsgxjr的博客 2535

Linq查询操作之Where筛选

  筛选操作where能够处理逻辑运算符组成的逻辑表达式。比如逻辑“与”,逻辑“或”,并从数据源中筛选数据,它和where子句的功能非常相似。Enumerable类的Where()原型如下:  1 public static IEnumerable&lt;TSource&gt; Where&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; source...

weixin_34261739的博客 420

LINQ查询操作符之Select、Where、OrderBy、OrderByDescending、GroupBy、Join、GroupJoin及其对应的查询语法

介绍     ·Select - Select选择;延迟     ·Where - Where查询;延迟     ·OrderBy - 按指定表达式对集合正序排序;延迟     ·OrderByDescending - 按指定表达式对集合倒序排序;延迟     ·Gro

anchenyanyue的专栏 1万+

LINQ查询中Where与Select的执行奥秘,你知道几个?

掌握C# LINQ 查询 Where 与 Select 链式技巧,提升数据处理效率。详解查询执行顺序、延迟加载机制及在集合过滤与投影中的实际应用,帮助开发者写出更简洁高效的代码。理解链式调用背后的优化原理,值得收藏。

BreakVein的博客 710

Linq SQL 动态个数where查询

在用where查询数据时会出现条件个数不确定的情况,虽然可以用循环组成SQL语句来实现,不过也可以看看下面的小例子,应该会更方便。下面的例子是从parts表中查找工件类型ID为1、2或6...(个数不定)的所有part。LinqPartsDataContext myLinqParts = new LinqPartsDataContext(); int[] typeid = new int[3] {...

qq_42483967的博客 1064

为什么你的LINQ查询变慢了?Where与Select链式顺序的致命影响

掌握C# LINQ查询性能优化秘诀,解析Where与Select链式顺序对执行效率的影响。通过合理调整过滤与投影顺序,显著提升数据处理速度,适用于各类集合操作场景。理解延迟执行机制,写出更高效的LINQ代码,值得收藏。

ProceShoal的博客 709

LINQ 标准的查询操作符 过滤 where、index1、OfType

LINQ 查询为最常用的操作符定义了一个声明语法。还有许多标准查询操作符 下面是 LINQ 定义的标准查询操作符。 下面开始学习这些查询 添加Using using System.Linq; using System.Linq.Expressions; 过滤 使用 Where 子句,可以合并多个表达式。例如,找出赢得至少 15 场比赛的巴西和奥地利赛手。传送...

97
上一篇: Navicat Premium 连接 Oracle 数据库 (续)
下一篇: VS2010 中更改项目名称
AmberFish5
博客等级 码龄16年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值