首页 技术 正文
技术 2022年11月6日
0 收藏 747 点赞 400 浏览 1858 个字

很多小伙伴都用过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"]
};

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

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,487
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289