很多小伙伴都用过Lambda表达式和linq表达式,用起来也得心应手,但是有的小伙伴

对匿名对象的查询与接收比较迷茫,(没有定义相应的实体),怎么在where()里面进行

条件筛选呢?常规用法我就不说了,我们来说一下匿名对象怎么操作。

我们先看一下Lambda表达式的形式:

Lambda表达式 说明
x=>x*x 返回参数值的平方
x=>{return x*x;} 返回参数值的平方。主体是语句块
int(x)=>x/2 返回参数值除以2的结果
{}=>folder.StopFolding(0) 调用一个方法,表达式不获取参数。表达式可能会、也可能不会返回值
(x,y)=>{x++;return x/y;} 多个参数,编译器自己推导参数类型。参数x是以值得形式传递的,所以+ +操作的效果是局部于表达式
(ref int x,y){X++;returnx/y;} 多个 参数,都显示指定类型。参数x的类型是以引用的形式传递的,所以+ +操作的效果是永久性的

然后用过Dictionary<>的童鞋都知道,它的循环取值是 item["列名"],那么我们也可以使用这种方式

进行操作,且看如下代码:

List<Dictionary<string, object>> Listdict = new List<Dictionary<string, object>>();
Dictionary<string, object> dict1 = new Dictionary<string, object>();
dict1.Add("Id", 1);
dict1.Add("name", "老大");
dict1.Add("avg", 5);
Listdict.Add(dict1);
Dictionary<string, object> dict2 = new Dictionary<string, object>();
dict2.Add("Id", 2);
dict2.Add("name", "老二");
dict2.Add("avg", 10);
Listdict.Add(dict2);
Dictionary<string, object> dict3 = new Dictionary<string, object>();
dict3.Add("Id", 3);
dict3.Add("name", "老三");
dict3.Add("avg", 20);
Listdict.Add(dict3);
Dictionary<string, object> dict4 = new Dictionary<string, object>();
dict3.Add("Id", 3);
dict3.Add("name", "老四");
dict3.Add("avg", 30);
Listdict.Add(dict4);
//1:查询Id等于2的用户
//Lambda表达式(与Lambda表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在《深入理解C#》中称为点标记)。
var temp = Listdict.Where(it => { return Convert.ToInt32(it["Id"]) == 2; }).ToList();
//2:查询avg大于9的和
//Lambda表达式(与Lambda表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在《深入理解C#》中称为点标记)。
var temp2 = Listdict.Where(it => { return Convert.ToInt32(it["avg"]) > 9; }).Sum(it => Convert.ToInt32(it["avg"]));
//linq表达式 (查询表达式)
var temp3 = (from it in Listdict where Convert.ToInt32(it["avg"]) > 9 select Convert.ToInt32(it["avg"])).Sum();
//3、排序
Listdict = Listdict.OrderByDescending(it => Convert.ToInt32(it["Id"])).ToList();
//联接(这里只展示内联接)Join
var temp5 = from a in Listdict
join b in Listdict
on a["Id"] equals b["Id"]
select new
{
Id = a["Id"],
Name = a["name"],
avg = a["avg"]
};

看了上面的是不是突然觉得茅塞顿开,他的不同点只是匿名对象的列名和实体的列名获取方式不一样罢了。

小伙伴们快去试试吧!发现更多应用可以留言讨论哦^_^

C# Lambda表达式和linq表达式 之 匿名对象查询接收的更多相关文章

  1. c# in deep 之Lambda表达式于LINQ表达式结合后令人惊叹的简洁(2)

    当Lambda表达式和LINQ一起使用时,我们会发现原本冗长的代码会变得如此简单.比如我们要打印0-10之间的奇数,让其从高到低排列并求其平方根,现在只用一行代码即可完成其集合的生成,直接上代码: v ...

  2. Linq专题之匿名对象

    匿名对象是c#3.0的一个新的机制,使用new关键字和一个对象的初始化器,就能创建一个匿名对象.顾名思义,创建的时候这个对象是一个匿名类型的对象,没有具体的类型.说到匿名对象,那么我们前面讲过的var ...

  3. Linq表达式和Lambda表达式用法对比

    什么是Linq表达式?什么是Lambda表达式?前一段时间用到这个只是,在网上也没找到比较简单明了的方法,今天就整理了一下相关知识,有空了再仔细研究研究 public Program() { List ...

  4. .net学习之新语法学习(匿名类和匿名方法,扩展方法,系统内置委托,Lambda表达式和linq等)

    1.自动属性 Auto-Implemented Properties 2.隐式类型 var  var变量不能作为全局变量使用,因为不能在编译时确定类型 3.参数默认值 和 命名参数 4.对象初始化器 ...

  5. entity framework 新手入门篇(1.5)-lambda表达式与linq

    在建立好了EF模型之后,先不着急使用它,在使用它之前,你还需要了解两个相关的技术,lambda表达式与linq. 作为微软C#语言中重要的语法糖-lambda表达式与LINQ,本质都是一个方法,以la ...

  6. 委托、匿名委托、Lambda 表达式、Expression表达式树之刨根问底

    本篇不是对标题所述之概念的入门文章,重点在阐述它们的异同点和应用场景.各位看官,这里就不啰嗦了,直接上代码. 首先定义一个泛型委托类型,如下: public delegate T Function&l ...

  7. C#从委托、lambda表达式到linq总结

    前言 本文总结学习C#必须知道的基础知识,委托.监视者模式.常用lambda表达式.linq查询,自定义扩展方法,他们之间有什么关系呢?匿名委托是如何演变成lambda表达式,lambda再如何导出l ...

  8. C# 基础知识系列- 6 Lambda表达式和Linq简单介绍

    前言 C#的lambda和Linq可以说是一大亮点,C#的Lambda无处不在,Linq在数据查询上也有着举足轻重的地位. 那么什么是Linq呢,Linq是 Language Intergrated ...

  9. Linq表达式、Lambda表达式你更喜欢哪个?

    什么是Linq表达式?什么是Lambda表达式? 如图: 由此可见Linq表达式和Lambda表达式并没有什么可比性. 那与Lambda表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在& ...

随机推荐

  1. 全文检索选择-------- Elasticsearch与Solr

    Elasticsearch简介* Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据. 它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三 ...

  2. Tomcat启动失败的几种解决办法

    1.重复映射 用Eclipse开发,新建了的servlet会有一个url-pattern声明: 这样就不需要在web.xml中添加映射,如果在web.xml中添加了这样一段: <servlet& ...

  3. uiautomator——简单的将自动化测试与截图对比相结合使用的小例子!

    1.在使用uiautomator进行自动化测试过程当中,执行某些动作之后,要进行判断是否已执行的动作成功时,需要添加检查点来判断,因此添加判断点除了使用id.text.view等方式进行之外,存在一种 ...

  4. validatebox相关验证

    $(document).ready( function(){ $.extend($.fn.validatebox.defaults.rules, { minLength: { validator: f ...

  5. Android进阶加密-第1章-Android系统架构-读书笔记

    第 1 章 Android 系统架构 1.1 Android 系统架构 Android 系统架构分为五层,从上到下依次是应用层.应用框架层.系统运行库层.硬件抽象层和 Linux 内核层. 应用层(S ...

  6. handler原理

    一.消息机制概述 1.消息机制的简介 (1)Handler是什么 handler使Android给我们提供的用来更新UI的一套机制,也是一套消息处理机制:我们可以用它发送处理消息. (2)Androi ...

  7. SQL学习(1)初学实验:SQL Server基本配置及基本操作

    网络配置.远程连接配置: 防火墙设置: SQL Server的默认端口号是1433. 网络配置: SQLServer Configuration Manager中的客户端协议,众多IP中随便选一个,比 ...

  8. pc蛋蛋app开发定制

    如今的pc蛋蛋app开发和pc蛋蛋软件开发互联网已经不再是一个新兴行业,对打仗的团队也要求更加正规化.对于产品技术运营市场等角色来说,如果每个人都能有比较全面的视野,那这个产业将是一个全新的趋势,单一 ...

  9. 如何设置织梦cms自定义表单字段为必填项

    1.编辑器打开\plus\diy.php2.在40行左右找到此行代码:$dede_fields = empty($dede_fields) ? '' : trim($dede_fields);3.在这 ...

  10. iOS可视化动态绘制八种排序过程(Swift版)

    前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...