Linq使用之标准运算符方法

#region linq的标准查询运算符(即lambda方式) 注:C#不支持标准查询运算符中带有整形参数(索引)的重载

// 1、标准查询运算符之筛选方法——where
            //IQueryable<Student> stu1=db.Student.Where(s => s.Ssex == "男");
            //GridView1.DataSource = stu1;
            //GridView1.DataBind();

// 2、标准查询运算符之select

//var stu2 =db.Student.Select(s => new {s.Sno,s.Sname,s.Sage}); //这叫匿名对象
            //GridView2.DataSource = stu2;
            //GridView2.DataBind();

//3、标准查询运算符之排序方法—— order
            //升序排序
            var stu3 = db.Student.OrderBy(s => s.Sage);
            GridView1.DataSource = stu3;
            GridView1.DataBind();

//降序排序之多条件排序
            var stu4 = db.Student.OrderByDescending(s => s.Sage).ThenByDescending(s=>s.Sno);
            GridView2.DataSource = stu4;
            GridView2.DataBind();

//4、标准运算符之连接集合—— Join
            var stu5 = db.Student.Join(db.StuCourse, s => s.Sno, stu => stu.Sno, (s, stu) => new { Sno=s.Sno,SCSno=stu.Sno,s.Sname,stu.Cid});
            GridView2.DataSource = stu5;
            GridView2.DataBind();

//左连接
            var leftJoin = from stu in db.Student
                           join sc in db.StuCourse
                           on stu.Sno equals sc.Sno
                           into temp
                           from t in temp.DefaultIfEmpty()
                           select new { stu.Sno, stu.Sage, Cid = t == null ? 0 : t.Cid };

//右连接
            var right = from sc in db.StuCourse
                        join stu in db.Student
                        on sc.Sno equals stu.Sno
                        into temp
                        from tt in temp.DefaultIfEmpty()
                        select new { sc.Cid, sc.Sno, SName = tt == null ? "" : tt.Sname };

//5、标准运算符之分组——GroupBy
             //按照年龄分组
            var stu6 = db.Student.GroupBy<Student, int>(s => (int)s.Sage);
            List<IGrouping<int, Student>> list2 = stu6.ToList();
            foreach (IGrouping<int,Student> item in list2)
            {
                //输出 小组 的 分组条件
                Response.Write(string.Format("小组:{0}<br/>",item.Key));
                //遍历 小组里 所有的 元素
                foreach (Student st in item)
                {
                    Response.Write(string.Format("姓名:{0}", st.Sname));
                }
                Response.Write("<br/>");
            }

//6、标准运算符之分页数据——Skip + Take
            //假设每页有5条记录
            //  int pageSize = 2;
            //return list.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
            var pageOne = db.Student.Skip<Student>(24).Take(6);
            GridView1.DataSource = pageOne;
            GridView1.DataBind();

#endregion

附加:

int[] numbers = { 0, 30, 15, 90, 85, 40, 75,20, };
            int[] arr = { };
            int first = numbers.First<int>(m => m > 35); // 返回满足条件的第一条记录 90
            int last = numbers.Last<int>(n => n < 40);  //返回满足条件的最后一条记录 20
            bool allResult = numbers.All<int>(mm => mm < 100); //判断所有元素是否都满足  true
            bool allResult2 = numbers.All<int>(mm => mm>5); // false
            bool anyResult = numbers.Any(); //numbers中有元素 就返回 true
            bool anyResult1 = arr.Any();    //arr中没有元素 返回false
            bool anyResult2 = numbers.Any<int>(mm => mm <1);  // 只要有一个元素满足条件 就返回true
            bool anyResult3 = numbers.Any<int>(mm => mm >89); //true
            bool anyResult5 = numbers.Any(m => m > 200); //false

时间: 2024-12-20 22:29:52

Linq使用之标准运算符方法的相关文章

2017-9-19C#笔记(LinQ标准运算符,String类,String方法,结构体,静态构造函数,枚举类型,位标识)

在LINQ中的标准查询运算符 写LINQ的时候有两种语法:查询语法和方法语法,其中方法语法是命令形式的,它使用的是标准的方法调用.方法是一组叫做标准查询运算符的方法. 标准查询运算符有一系列叫做API的方法组成,他能让我们查询任何.NET数据集合.有关标准查询运算符的重要特性如下: (1)       被查询的结合对象叫做序列,它必须实现IEnumerable<T>接口, T是类型: (2)       标准查询运算符使用方法语法 (3)       一些运算符返回IEnumberable对象

LINQ to Entities 不识别方法“System.String ToString() 的解决方法

今天在做一个页面的时候出现了LINQ to Entities 不识别方法"System.String ToString()"的错误,对于源码IQueryable<SelectListItem> items = roleInfoServer.Get(r => true).Select(r => new SelectListItem() { Value = r.Id.ToString(), Text = r.RoleName });找了好长的时间没有找到原因.无奈之

LINQ中in的实现方法-LINQ To Entities如何实现查询 select * from tableA where id in (1,2,3,4)

如果用in是字符串类型无问题,可以直接这样用 var result = SNFService.Instance.ModuleService.GetList(UserInfo).Where(entity => entity.DeletionStateCode == 0 ).Where(entity => urls.Contains((entity.NavigateUrl == null ? "" : entity.NavigateUrl).ToLower())).OrderB

LINQ to Entities 不识别方法“System int string 转换的问题

这个问题困扰了挺久,网上找了挺多方法 都太好使. 分几种情况. 1.如果查询结果 转换,那比较容易. var q = from c in db.Customers where c.Country == "UK" || c.Country == "USA" select new { Phone = c.Phone, InternationalPhone = PhoneNumberConverter(c.Country, c.Phone) }; public strin

linq to entity不识别方法"System.String ToString()"

将班级id以字符串形式输入如:"1111,1112,1113".数据库里的id为int型,在数据路里找到匹配的相应班级转换成列表.在这里爆出问题:不识别方法"System.String ToString()",跪求大神提出解决方案.public IEnumerable<Class1> FindClassesByIDs(string ids)        {            var r = from c in this.DbContext.Clas

LINQ to Entities 不识别方法“Int32 Parse(System.String)”,因此该方法无法转换为存储表达式。解决

  问题描述 最近在用LINQ to Entities,看看下面的代码 //获取分页数据 var admins = from aa in db.VAccountAdmins select aa; //处理过滤规则 if (null != filterRules) { JArray roles = (JArray) JsonConvert.DeserializeObject(filterRules); foreach (var fr in roles) { string field = fr["f

LinQ To Objects 高级查询方法

什么是LinQ To Objects? 用一个例子解释,首先定义一个数组,查询数组中的最大值: int[] arr = { 123, 2, 3, 45, 654, 2324, 897, 56, 6554, 4, 3, 6, 8, 434 }; 旧的方法: int max=0 ; foreach(int a in arr) { if(a>=max) max=a; } Console.Write("最大值:"+ max); LinQ To Objects方法: Console.Wri

iOS开发中单例对象的标准创建方法

//标准的单例写法 //以创建歌曲的管理者为例进行创建.+(instancetype) sharedQYSongManager { static QYSongsManager *songManager =nil; //采用GDC标准单例实现方法 static dispatch_once_t onceToken; //Executes a block object once and only once for the lifetime of an application. dispatch_onc

《Entity Framework 6 Recipes》中文翻译系列 (26) ------ 第五章 加载实体和导航属性之延缓加载关联实体和在别的LINQ查询操作中使用Include()方法

翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-7  在别的LINQ查询操作中使用Include()方法 问题 你有一个LINQ查询,使用了类似这样的操作 group by,join,和where:你想使用Include()方法预先加载额外的实体.另外你想使用Code-First来管理数据访问. 解决方案 假设你有如图5-22所示的概念模型 图5-22 一个简单的包含Club和Event以及它们之间一对多关联的模型 在Visual S