LINQ 的标准查询操作符

基于LM2596的±12V双路电源设计:拓扑、计算与PCB布局实战 在模拟电路设计中,双极性电源对运放、传感器调理等至关重要。DC-DC开关电源通过Buck-Boost拓扑实现负压输出,利用LM2596降压芯片反相连接,可高效生成±12V双路电源。该方案效率达85%以上,外围元件少,成本低廉,适用于音频前级、工控仪表等场景。反馈电阻计算需注意参考地变化,PCB布局中续流二极管和电感走线影响纹波与EMI。合理选择肖特基二极管和低ESR电容,并添加假负载,可确保双路输出稳定。 阅读详情

Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
("SELECT contactname FROM customers WHERE city = {0}",
    "London");


LINQ 的标准查询操作符
John Papa

代码下载位置: DataPoints2008_03.exe (958 KB)
Browse the Code Online
  目录
操作符和 LINQ
操作符类型
Lambda 表达式
First 和 Single
聚合、层次结构和投影
投影和排序
限定符和转换
结束语

语言集成查询 (LINQ) 允许开发人员通过强类型化语法使用 Microsoft? .NET Framework 3.5 代码编写类似 SQL 的查询。然后,各种 LINQ 提供程序,如 LINQ to Objects(可利用它根据对象层次结构编写查询)和 LINQ to Entities(可利用它根据实体框架的概念模型编写查询)可根据代表数据存储的细微差别来有效处理这些查询。
除强类型化语法外,LINQ 查询还具有一个标准查询操作符库来增强其功能。这些标准查询操作符对序列进行运算并可执行各种运算,如确定序列中是否存在某个值以及对序列运行合计函数(如求和)。
在本月的专栏中,我将使用 LINQ 来执行实际的查询和运算(会用到 LINQ to Objects 和 LINQ to Entities)。我将查询一个实体集合并使用其导航属性深入研究一组具备层次结构的实体。我还会为您演示如何对数组和集合应用多个标准查询操作符。并展示如何使用 lambda 表达式强化 LINQ 的标准查询操作符,以及如何利用它们来从序列解析特定信息并对序列执行复杂的逻辑运算。本专栏的下载中提供有所有代码示例(请参见 msdn.microsoft.com/msdnmag/code08.aspx)。


操作符和 LINQ
LINQ 自身功能非常强大,无论使用的是 LINQ to XML、LINQ to DataSets、LINQ to Entities、LINQ to Objects 还是附带的任何其他 LINQ 提供程序。LINQ 的核心功能在于其强类型化查询语法,它可用于任意此类提供程序。当将 LINQ 与一个或多个标准查询操作符结合使用时,会得到一个功能更为强大的工具集,从而可精细地控制一组数据。
标准查询操作符在 System.Linq 命名空间中的 System.Core.dll 程序集中作为静态类 Enumerable 和 Queryable 的扩展方法存在,并且可用于实现 IEnumerable<T> 或 IQueryable<T> 的对象。这样它们就能使用 LINQ to Entities 和 LINQ to SQL 之类的提供程序对各类对象执行运算,从内存中的集合和数组(序列)到远程数据库。
可轻松地确定处理特定任务时所拥有的操作符。如果要在 LINQ 查询中使用操作符,可使用 Queryable 静态类可用扩展方法中的操作符。如果要对实现 IEnumerable<T> 的序列使用操作符,可使用 Enumerable 静态类中的一个扩展方法。但是,请记住:并非 Queryable 类中的所有操作符都适用于基础数据存储,因此运行时可能不支持某些操作符。


操作符类型
操作符有多种类型(使用对象浏览器查看 Enumerable 和 Queryable 类即可找到所有操作符)。图 A 以字母顺序显示了不同类型操作符的分类。可利用它来大致了解一下操作符所提供的功能。我将使用 LINQ to Objects 和 LINQ to Entities 展示一小组此类操作符,以显示它们如何为实际应用程序带来好处。
  Figure A Categories of Operators

操作符 说明
聚合  
Aggregate 对序列执行一个自定义方法
Average 计算数值序列的平均值
Count 返回序列中的项目数(整数)
LongCount 返回序列中的项目数(长型)
Min 查找数字序列中的最小数
Max 查找数字序列中的最大数
Sum 汇总序列中的数字
连接  
Concat 将两个序列连成一个序列
转换  
Cast 将序列中的元素转换成指定类型
OfType 筛选序列中指定类型的元素
ToArray 从序列返回一个数组
ToDictionary 从序列返回一个字典
ToList 从序列返回一个列表
ToLookup 从序列返回一个查询
ToSequence 返回一个 IEnumerable 序列
元素  
DefaultIfEmpty 为空序列创建默认元素
ElementAt 返回序列中指定索引的元素
ElementAtOrDefault 返回序列中指定索引的元素,或者如果索引超出范围,则返回默认值
First 返回序列中的第一个元素
FirstOrDefault 返回序列中的第一个元素,或者如果未找到元素,则返回默认值
Last 返回序列中的最后一个元素
LastOrDefault 返回序列中的最后一个元素,或者如果未找到元素,则返回默认值
Single 返回序列中的单个元素
SingleOrDefault 返回序列中的单个元素,或者如果未找到元素,则返回默认值
相等  
SequenceEqual 比较两个序列看其是否相等
生成  
Empty 生成一个空序列
Range 生成一个指定范围的序列
Repeat 通过将某个项目重复指定次数来生成一个序列
分组  
GroupBy 按指定分组方法对序列中的项目进行分组
联接  
GroupJoin 通过归组将两个序列联接在一起
Join 将两个序列从内部联接起来
排序  
OrderBy 以升序按值排列序列
OrderByDescending 以降序按值排列序列
ThenBy 升序排列已排序的序列
ThenByDescending 降序排列已排序的序列
Reverse 颠倒序列中项目的顺序
分区  
Skip 返回跳过指定数目项目的序列
SkipWhile 返回跳过不满足表达式项目的序列
Take 返回具有指定数目项目的序列
TakeWhile 返回具有满足表达式项目的序列
投影  
Select 创建部分序列的投影
SelectMany 创建部分序列的一对多投影
限定符  
All 确定序列中的所有项目是否满足某个条件
Any 确定序列中是否有任何项目满足条件
Contains 确定序列是否包含指定项目
限制  
Where 筛选序列中的项目
设置  
Distinct 返回无重复项目的序列
Except 返回代表两个序列差集的序列
Intersect 返回代表两个序列交集的序列
Union 返回代表两个序列交集的序列

Lambda 表达式
许多标准查询操作符在对序列执行运算时都使用 Func 委托来处理单个元素。Lambda 表达式可与标准查询操作符结合使用以代表委托。lambda 表达式是创建委托实现的简略表达形式,并可用于匿名委托适用的所有场合。C# 和 Visual Basic? .NET 均支持 Lambda 表达式。但是,必须注意:由于 Visual Basic .NET 尚不支持匿名方法,Lambda 表达式可能仅包含一个语句。
让我们来看看如何对一个整数数组使用 Single 操作符。这个整数数组的每个元素代表 2 的 1 到 10 次方。先创建此数组,然后使用 Single 操作符来检索满足 Lambda 表达式中指定条件的单个整数元素:
复制代码
int[] nums = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 };
int singleNum = nums.Single(x => x > 16 && x < 64);
Console.WriteLine(singleNum.ToString());

Lambda 表达式包含多个关键部分。Lambda 表达式首先定义传入委托的变量。在以上代码示例中,x(在 => 操作符左侧声明)是参数,代表传递给它的 nums 数组中的每个元素。Lambda 表达式的剩余部分代表数组中每个元素的评估逻辑。可使用匿名委托轻松地重新编写以上表达式,如下所示:
复制代码
int singleNum = nums.Single<int>(
  delegate(int x) {return (x > 16 && x < 64); }
) ;

但是,此代码的可读性不及 Lambda 表达式。C# 2.0 引入了可使委托的传递稍微轻松些的匿名委托;但是,Lambda 表达式的简洁语法可使其更加简单。


First 和 Single
如果必须从序列中提取一个值,First、FirstOrDefault、Single 和 SingleOrDefault 操作符都非常有用。First 方法返回序列中的第一个元素。First 有一个重载方法,可使用它来传入 Lambda 表达式来代表一个条件。例如,如果要返回整数序列中整数元素大于 50 的第一个元素,可使用以下代码示例:
复制代码
int[] nums = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 };
int num1 = nums.First<int>();
int num2 = nums.First<int>(x => x > 50);
int num3 = nums.FirstOrDefault<int>(x => x > 5000);

Console.WriteLine(
  num1.ToString() + "-" +
  num2.ToString() + "-" +
  num3.ToString());

此代码会查找第一个元素 (1)、大于 50 的第一个元素 (64) 以及大于 5,000 的第一个元素。由于数组中没有元素满足第三个 Lambda 表达式(数组中无整数大于 5,000),则如果代码使用的是 First 操作符而非 FirstOrDefault,则会引发异常。在使用 FirstOrDefault 操作符时,如果没有元素满足 Lambda 表达式,则会返回 0。First 操作符也可用于 LINQ to Entities 查询,如下所示:
复制代码
using (Entities entities = new Entities())
{
  var query = (from c in entities.Customers
               select c).First(c => c.City.Equals("London"));
  Console.WriteLine(query.CompanyName);
}

在此示例中,将返回 London 城中的第一个客户。正如您所看到的,当 First 方法用于各种 LINQ 提供程序(在本例中为 LINQ to Objects 和 LINQ to Entities)时,所用的语法并不会更改。
在 LINQ to Entities 上下文中,First 操作符非常有用,尤其是您知道会从查询返回单个记录时。例如,您可能有个查询,它常在给出 CustomerID 时获取一条客户记录。这种情况总是返回 0 或 1 条记录,因此,得到一个序列不如就得到一个实体本身。换句话说,您宁愿获取 Customer 实体而非 1 个 Customer 实体序列。First 方法在某种怦下非常有用,如以下代码段所示。(由于实体框架不会尝试在客户端和服务器之间分发单个查询的执行,并且 LINQ to Entities 不支持 Single 方法,因此使用 First 方法是个轻松的替代方法。)
复制代码
using (Entities entities = new Entities())
{
  var query = (from c in entities.Customers
               where c.CustomerID.Equals("BOLID")
               select c).First();
  Console.WriteLine(query.CompanyName);
}

聚合、层次结构和投影
在 LINQ to Entities 查询中使用聚合操作符(如 Sum)可有助于简化查询。例如,以下代码检索订单总额大于 $10,000 的一个订单序列:
复制代码
using (Entities entities = new Entities())
{
  var query = from o in entities.Orders
              where o.OrderDetails.Sum(
                od => od.UnitPrice * od.Quantity) >= 10000
              select o;
  foreach (Orders order in query)
    Console.WriteLine(order.OrderID);
} 

由于 LINQ 可查询层次结构实体集合,因此标准查询操作符也可用于对嵌套实体序列执行运算。当必须计算或询问派生数据时,这一点非常有用。派生数据可能仅存在于其基本窗体中,如客户订单的详细信息仅包含单价和数量值。在本例中,未在模型中的任何位置提供代表订单总金额的聚合数据。然而,通过在 LINQ 查询中应用 Sum 操作符,仍可检索消费金额超过 $20,000 的所有客户,如下所示:
复制代码
using (Entities entities = new Entities())
{
  var query = from c in entities.Customers
              where c.Orders.Sum(
                o => o.OrderDetails.Sum(
                  od => od.UnitPrice * od.Quantity)) >= 25000
              select c;
  foreach (Customers customer in query)
    Console.WriteLine(customer.CompanyName);
}

此示例展示了如何在 LINQ 查询的多个层次应用标准查询操作符。查询最终会返回一个 Customers 实体序列,但为达到此目的,它必须首先深入每个客户的订单以及每个订单的订单详细信息获取所需数据,这样才可以计算每项的价格,汇总每个订单的项目,然后汇总每个客户的总额。
Count 操作符是另一聚合标准查询操作符。可通过使用以下代码确定有多少客户的消费金额超过 $25,000:
复制代码
using (Entities entities = new Entities())
{
  var query = (from c in entities.Customers
               where c.Orders.Sum(
                 o => o.OrderDetails.Sum(
                   od => od.UnitPrice * od.Quantity)) >= 25000
               select c).Count();
  Console.WriteLine(query);
}

可使用 Max 操作符来确定最佳客户。以下代码示例将返回消费最高的客户所花费的金额。它在层次结构的多个层级中组合使用 Sum 和 Max 聚合操作符:
复制代码
using (Entities entities = new Entities())
{
  var query = (from c in entities.Customers
               select new
               {
                 c.CustomerID,
                 Total = c.Orders.Sum(
                   o => o.OrderDetails.Sum(od => od.UnitPrice))
               }).Max(c2 => c2.Total);
  Console.WriteLine(query);
}

投影和排序
您可能还注意到我在之前的示例中暗藏了一个投影。在使用 Max 操作符之前,LINQ 查询并不返回客户列表。而是会返回一个投影,此投影创建了包含 CustomerID 属性和 Total 属性(客户的整个消费金额)的一个新实体。投影是 LINQ 必不可少的一部分,如前一示例所示,将它们投影到序列中后,就可使用标准查询操作符来进一步处理它们。
图 1 显示了如何创建一个新实体投影,其中包含 CustomerID 和客户的订单总金额(使用之前讨论的 Sum 操作符)。图 1 还使用 OrderByDescending 操作符来按计算总额对投影实体序列进行排序。如果两个客户总额相同,还会使用另一排序操作符来进一步定义顺序。例如,还可使用以下代码修正图 1 中的 foreach 语句以进一步限定排序规则:
  Figure 1 Aggregates, Projections, and Ordering
复制代码
using (Entities entities = new Entities())
{
  var query = from c in entities.Customers
              where c.Orders.Sum(
                o => o.OrderDetails.Sum(od => od.UnitPrice)) > 0
              select new
              {
                c.CustomerID,
                Total = c.Orders.Sum(
                  o => o.OrderDetails.Sum(od => od.UnitPrice))
              };
  foreach (var item in query.OrderByDescending(x => x.Total))
    Console.WriteLine(item.CustomerID + " == " + item.Total);
}


复制代码
foreach (var item in
  query.OrderByDescending(x => x.Total)
  .ThenBy(x => x.CustomerID))
{
  Console.WriteLine(item.CustomerID + " == " + item.Total);
}

在该代码段中,我添加了 ThenBy 操作符和一个 Lambda 表达式,以表示序列应首先按 Total 属性降序排列,然后按投影的 CustomerID 属性升序排列。


限定符和转换
如果需要确定序列中是否存在某个值,可使用标准查询操作符 Any。限定符(如 Any、All 和 Contains)会搜索元素序列,并评估序列是否满足 lambda 表达式的条件。如果需检查序列以确定某些事宜(例如:是否存在来自特定地址的客户、所有客户是否来自同一国家或者任意其他分析确定性问题),它将非常有用。
例如,以下 LINQ 查询会检查是否来自 United Kingdom 的所有客户都位于 London。它使用限定符 All 并将其传递给仅评估城市是否为 London 的 lambda 表达式。如果序列中的每个元素都满足此条件并且 lambda 表达式返回 true,然后 All 操作符会返回 true:
复制代码
using (Entities entities = new Entities())
{
  bool allUKCustomerAreFromLondon = (from c in entities.Customers
                                     where c.Country == "UK"
                                     select c).All(
                                       c => c.City.Equals("London"));
  Console.WriteLine(allUKCustomerAreFromLondon ? "Yes" : "No");
}           

需在此查询中询问的另一问题是序列中是否有来自 United Kingdom 的 Cowes 的实体。对于此问题,可使用 Any 限定符来计算序列,如下所示:
复制代码
using (Entities entities = new Entities())
{
  bool isOneUKCustomerFromCowes = (from c in entities.Customers
                                   where c.Country == "UK"
                                   select c).Any(
                                     c => c.City.Equals("Cowes"));
  Console.WriteLine(isOneUKCustomerFromCowes? "Yes" : "No");
}

Contains 操作符在评估序列中是否包括您所查找的项目时类似于 Any 操作符。Any 操作符可确定序列的某个项中是否存在某个值,而 Contains 操作符则确定序列中是否存在特定项目实例。例如,在将某个对象添加到序列中之前,您可能希望确保序列中并未包含该对象。图 2 展示了如何检查。
  Figure 2 Using Contains and Conversion
复制代码
using (Entities entities = new Entities())
{
    Customers customerBSBEV = (from c in entities.Customers
                               where c.CustomerID == "BSBEV"
                               select c).First();

    var customersUK = from c in entities.Customers
                      where c.Country == "UK"
                      select c;

    bool isCustomerInSequence = customersUK.Contains(customerBSBEV);

    Console.WriteLine(isCustomerInSequence? "Yes" : "No");
}


请注意:在图 2 中,首先针对 BSBEV 客户检索 Customers 实体。然后,检索客户来自 United Kingdom 的 Customers 实体序列。最后,使用 Contains 操作符来检查 Customers 序列是否包含 customerBSBEV 变量的实例。
图 2 中所显示的 Contains 操作符实现适用于可基于其实际实例信心十足地比较对象的场合。但是,如果需要 Contains 操作符根据逻辑标识进行测试又该如何呢?幸运的是,Contains 操作符包含一个重载,可使用它来传递实现 IEqualityComparer<T> 接口的对象。要根据 CustomerID 使用 Contains,可按如下所示重新编写图 2 中的代码:
复制代码
using (Entities entities = new Entities())
{
  ...

  bool isCustomerInSequence = customersUK.Contains(customerBSBEV,
    new CustomerComparer());

  Console.WriteLine(isCustomerInSequence? "Yes" : "No");
}

其中 CustomerComparer 定义为
复制代码
private class CustomerComparer : IEqualityComparer<Customers>
{
  public bool Equals(Customers x, Customers y) {
    if (x == null || y == null)
      return false;
    return x.CustomerID.Equals(y.CustomerID);
  }

  ...
}

结束语
有许多标准查询操作符均可定义为 Enumerable 和 Queryable 序列类的扩展方法。如我之前所示,这些操作符有助于扩展 LINQ 的功能。我还展示了结合使用多个 .NET Framework 3.5 新增强功能(包括 lambda 表达式、LINQ、实体框架和隐式类型化变量)来更加轻松地编写功能强大的代码和逻辑。

使用cubeMX生成USB HID设备 本文主要介绍如何使用stm32开发板和cubeMX生成HID设备,供参考。 阅读详情

相关推荐

用Frida-RPC搞定大麦App最新版签名:一个脚本解决x-sign和x-mini-wua

本文深入解析大麦App最新版签名机制(x-sign和x-mini-wua),详细介绍如何利用Frida-RPC技术开发稳定脚本获取签名参数。通过实战案例展示Java上下文切换、参数序列化等关键技术解决方案,为安全研究和技术验证提供可靠方案。

weixin_42525738的博客 642

Linq中小心使用IndexOf

我们平常在做字符串的模糊查询时,有可能会用到下面的类似LINQ写法: string.IsNullOrEmpty(_SN) ? true : a.SN.IndexOf(_SN) != -1 这条LINQ翻译为SQL如下: ( ( CASE WHEN...

weixin_33700350的博客 534

保姆级教学:从0搭建微信小程序SpringBoot+Vue(一)

目标:实现一个微信小程序从后端数据库MySQL获取的商品展示页。 框架:后端采用SpringBoot,前端采用Vue,数据库MySQL。 部署工具:IntelliJ IDEA 2024.2专业版+HbuilderX+Node+微信开发者工具,jdk1.8已安装

weixin_44545610的博客 4925

.NET[C#]LINQ查询List集合中所有重复的元素如何实现?(转载)

方案一 var query = lst.GroupBy(x=>x) .Where(g=>g.Count()>1) .Select(y=>y.Key) .ToList(); 如果还需要找出重复的元素个数: var query = lst.GroupBy(x=>x) ...

Edwardliuy的博客 2313

Hermes深入理解及源码解析(二):Hermes的记忆机制

源码位置:tools/memory_tool.py存储内容为两个文件,放在 ~/.hermes/memories/:MEMORY.md:Agent 自己的笔记(环境事实、项目约定、工具坑、学到的东西)—— 上限 2200 字符USER.md:关于用户的画像(角色、偏好、沟通风格)—— 上限 1375 字符作为一个独立的工具注册在系统中(为了让智能体正确使用它,System Prompt()中明确下达了禁令存储目标存储位置数据类型持久偏好/事实MEMORY.md我是谁、我喜欢什么、环境配置。

qq_41984117的博客 559

Notion访问卡顿?一键优化DNS与Hosts提升加载速度

本文针对Notion访问卡顿问题,提供了两种核心优化方案:修改Hosts文件与配置DNS。详细解析了卡顿根源在于网络链路,并手把手指导用户在Windows、Mac、iOS及Android设备上实施优化,旨在通过替换为更优线路,显著提升Notion的页面加载与同步速度。

fff88的博客 1196

如何使用LINQ获取索引? [重复]

This question already has an answer here: 这个问题已经在这里有了答案: Get List<> element position

CHCH998的博客 1357

LLC混合滞回控制 vs 电压模/电流模:UCC25640x仿真对比与选型指南

在开关电源设计中,LLC谐振变换器的环路补偿是核心难点。传统电压模控制(VMC)和电流模控制(CMC)在LLC拓扑上存在环路增益漂移、动态响应慢等局限。混合滞回控制通过滞回比较器直接调制开关频率,并融合输出电压与谐振腔电流信息,实现了自适应环路增益和快速瞬态响应。该技术显著提升轻载效率与动态性能,适用于高密度适配器、快充及车载充电机等场景。本文基于UCC25640x系列,通过仿真对比三种控制策略,为工程选型与调试提供实践参考。

weixin_33925615的博客 334

Linq 查询某个字段为null的数据--实战

如tb_flag 数据结构如下: flag int null 不能使用:flag==null 生成的SQL语句为 where flag=null 建议使用:可空类型 用Nullable<T>.Equals(字段,值) var query=from f in db.tb_flag where Nullable<int>.Equals(f.flag,null) select f; 生成的SQL语句为 where flag is null #region 取无估计产品编码...

qq_18932003的博客 2769

电驱系统功率级“多合一”解决方案

如何提升电驱动系统的产品性能、减小能耗和进一步轻量化,以加强整车市场竞争力,是摆在国内外新能源车企面前的共同课题。为此,具有多年动力总成电子系统开发经验的美国著名半导体及电子解决方案专家——德州仪器(Texas Instrument)提出了多种功率级别“多合一”整合方案和设计思路,助力新能源车企提升技术优势。

yessunday的专栏 1370

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

pig_ning的博客 3144

Linq to OBJECT延时标准查询操作符

Linq to OBJECT延时标准查询操作符 1、Where  操作符用于限定输入集合中的元素,将符合条件的元素组织声称一个序列结果。2、Select  操作符用于根据输入序列中的元素创建相应的输出序列中的元素,输出序列中的元素类型可以与输入序列中的元素...

176

【路径规划】Theta_star算法机器人栅格地图最短路径规划【含Matlab源码 2618期】

Theta_star算法机器人栅格地图最短路径规划 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 363

LINQ之延迟执行标准查询操作符(上)

标准查询操作符(Standard Query Operator)和查询表达式(Query Expression)是实现LINQ查询2种方式。 通过查看IL代码,我们会发现查询表达式编译后也是转换成标准查询操作符的,并且有些查询时无法用查询表达式来操作的, 因此标准查询操作符显得格外重要,我们将分几次介绍他们。 大多数的标准查询操作符静态类:System.Linq.Enumerable的扩展方法,并...

weixin_30273175的博客 188

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LINQ的标准查询操作符

语言集成查询 (LINQ) 允许开发人员通过强类型化语法使用 Microsoft® .NET Framework 3.5 代码编写类似 SQL 的查询。然后,各种 LINQ 提供程序,如 LINQ to Objects(可利用它根据对象层次结构编写查询)和 LINQ to Entities(可利用它根据实体框架的概念模型编写查询)可根据代表数据存储的细微差别来有效处理这些查询。 ...

weixin_34026276的博客 123

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Linq 标准查询操作符三

本文介绍了LINQ标准查询操作符。没有这些操作符,LINQ就不会存在。本文为理解这些操作符的功能提供了很好的基础。了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰富的功能。 一、投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影。下面的示例中使用select从序列中返回Employee表的所有列: ...

weixin_30632883的博客 202

LINQ 标准查询操作符

本文介绍了LINQ标准查询操作符。没有这些操作符,LINQ就不会存在。本文为理解这些操作符的功能提供了很好的基础。了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰富的功能。 推荐大家下载本文的PDF进行阅读,可以方便的使用书签来阅读各个方法,而且代码中的关键字是高亮显示的。pdf版下载地址http://www.jb51.net/books/247...

weixin_30609287的博客 199

LINQ标准查询操作符

【返回目录】 上一篇文章《什么是LINQ》可能讲得太空洞、枯燥,对于编程技术类的文章来说,我个人认为还是码文并茂效果更好,有些东西理论的话讲半天不如一两行简洁的代码来得直观、明了,好在接下来的系列文章都主要以代码为主,说明性的语言为辅,我相信绝大多数阅读这些文章的朋友都是多多少少已经有了些C#编程语言的基础的,那好,咱们就言简意赅地切入正题把。 标准查询操作符就是可以查询任何.NET数组或者集...

weixin_30768175的博客 100

开篇 — LINQ标准查询操作符

LINQ标准查询操作符 一、 概述   标准查询操作符是形成LINQ模式的一系列方法的集合,并通过各自的LINQ提供程序来实现,而LINQ模式则是创建查询表达式来投影、过滤、分组和转换数据的一种标准方式。标准查询操作符提供了查询任何实现了IEnumerable接口和IQueryable接口的对象的能力。 二、标准查询操作符 1. 投影操作符 2. 限制操作符 3. 排序操作符 4. ...

weixin_30629653的博客 79

【转】LINQ标准查询操作符(一)

转自:http://www.cnblogs.com/dotnetmvc/p/3679779.html LINQ标准查询操作符(一)——select、SelectMany、Where、OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse 一、投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影。下面的示例中使用...

beautylanlan的博客 263

【转】LINQ标准查询操作符(四)

转自:http://www.cnblogs.com/dotnetmvc/p/3680481.html LINQ标准查询操作符(四) —AsEnumerable,Cast,OfType,ToArray,ToDictionary,ToList,ToLookup,First,Last,ElementAt 十、转换操作符 转换操作符是用来实现将输入对象的类型转变为序列的功能。名称以“As”开头的转换方法可...

beautylanlan的博客 216
上一篇: Request.ServerVariables
下一篇: SQL DATE 日期格式转换
星梦枫
博客等级 码龄16年 2粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值