很多小伙伴都用过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"] };
看了上面的是不是突然觉得茅塞顿开,他的不同点只是匿名对象的列名和实体的列名获取方式不一样罢了。
小伙伴们快去试试吧!发现更多应用可以留言讨论哦^_^