public static void c() { List <stu> lstu = new List <stu> { new stu { id = 3, name = "zs", age = 1, pc = 0 }, new stu { id = 3, name = "zs", age = 1, pc = 0 }, new stu { id = 3, name = "zs", age = 2, pc = 0 }, new stu { id = 2, name = "ls", age = 2, pc = 0 }, new stu { id = 4, name = "ls", age = 3, pc = 2 }, new stu { id = 4, name = "ls", age = 3, pc = 0 }, new stu { id = 4, name = "lr", age = 4, pc = 2 }, new stu { id = 4, name = "lr", age = 4, pc = 2 }, new stu { id = 4, name = "lr", age = 5, pc = 2 } }; int c8 = lstu.GroupBy(p => p.age).Count() - lstu.Where(c => c.pc != 0).GroupBy(s => s.age).Count(); IEnumerable <IGrouping <int, stu> > aaa = lstu.GroupBy(c => c.age); foreach (IGrouping <int, stu> sa in aaa) { // List<stu> stua = sa.; } //lstu.Where(s => s.age == s.age && s.pc != 0).Count(); //lstu.Select(s=>s.pc!=0) // select * from b group by age List <stu> lstugroup = lstu; List <stu> lstugroup0101 = lstu; string a = "1,3,2,6,9,9"; string b = "1,3,5,7,9"; string c1 = "1,3,5,7,9,7"; string d = "1,2,3,4,5,6"; List <string> lsa = a.Split(',').ToList();//数组转ToList集合(using System.Linq;) List <string> lsb = b.Split(',').ToList(); List <string> lsc = c1.Split(',').ToList(); List <string> lsd = d.Split(',').ToList(); List <string> lsstr = new List <string>() { "qq", "weibo", "zhihu" }; List <int> lsint = new List <int>() { 1, 2, 5 }; // 1 单个集合 bool bbh = lsa.Contains("2"); //是否包含 bool bbh2 = lstu.Exists(s => s.age == 1 && s.id == 5); List <string> lsqc = lsa.Distinct().ToList(); //一维去重 List <string> lsqc4 = lstu.Select(p => p.name).Distinct().ToList(); //选择name属性并去重 //List<string> lsqc5 = lstu.Count(s=>s.age) //2,排序,求和 lsa.Sort(); //排序,无返回值; lstu = lstu.OrderBy(s => s.id).ThenBy(s => s.age).ToList(); // 以id,age排序 decimal sum = lsint.Sum(); //合计,list 必须为int等类型 decimal sum2 = lstu.Sum(s => s.age); // 2 set操作 两个集合:交差并 集合; bool bjj = lsa.Intersect(lsb).Count() > 0; //判断是否有交集 List <string> lsjj = lsa.Intersect(lsb).ToList(); //求交集 1,3,9 List <string> lscj = lsa.Except(lsb).ToList(); //求相对差集 相对las得2,6 List <string> lsbj2 = lsa.Union(lsc).ToList(); //求并集(并保留重复项) 1,2,3,6,9,9,1,3,5,7,9 List <string> lsbj1 = lsa.Union(lsb).ToList(); //求并集(并剔除重复项) 1,2,3,5,6,7,9 lstu = lstu.Skip(2).Take(3).ToList(); //从第二项开始取3个项目;System.Linq.Enumerable stu t = lstu.Find(s => s.id > 2); lstu = lstu.Where(s => s.id > 2).ToList(); //3 group by var ab2 = (from p in lstugroup group p by p.name into g select new { name = g.Key }).ToList(); //单属性distinct var ab3 = (from p in lstugroup group p by new { p.name, p.age } into g select new { name = g.Key }).ToList(); //多属性distinct //4 过滤 List <stu> ab4 = lstugroup.GroupBy(p => p.id).Select(p => new stu { id = p.Key, name = p.FirstOrDefault().name }).ToList(); //单属性distinct并默认其他属性 // 5 linq where findAll 的比较_形式 List <stu> ab5 = (from i in lstugroup where i.id > 3 select i).ToList(); List <stu> ab6 = lstugroup.Where(s => s.id > 3).ToList(); List <stu> ab7 = lstugroup.FindAll(s => s.id > 3);//直接返回该对象,不需要toList() // 6 linq where findAll 的比较_性能 》数据比较功能 where≈findAll > linq List <stu> stuceshi = new List <stu>(); for (int i = 0; i < 100000; i++) { stuceshi.Add(new stu { id = i, name = "name" + i, age = i, mm = "zs" }); } //10w次比对数据 //List<stu> ab8 = (from i in stuceshi where i.mm =="zs" select i).ToList();//11.1742ms //List<stu> ab9 = lstugroup.Where(s => s.mm == "zs").ToList();//0.3283ms //List<stu> ab10 = lstugroup.FindAll(s => s.mm == "zs");//0.3225ms // 8千DM_DORM对象筛选 三者性能略同 string name1; System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); for (int i = 0; i < 1000000; i++) { //name1 = stuceshi.Find(s => s.id == 99999) == null ? "" : stuceshi.Find(s => s.id == 99999).name; //stuceshi = stuceshi.Where(s => s.name == "").ToList(); stuceshi = stuceshi.Where(s => s.name.Length == 0).ToList(); } sw.Stop(); string ts2 = sw.Elapsed.TotalMilliseconds.ToString(); // 7 处理find异常.大量数据时,自己处理异常效率是try catch的6倍; string name3 = lstu.Find(s => s.id == 8) == null ? "" : lstu.Find(s => s.id == 8).name; //string name1 = stuceshi.Find(s => s.id == -1) == null ? "" : stuceshi.Find(s => s.id == -1).name; //3.9594 //string name1 = stuceshi.Find(s => s.id == 99999) == null ? "" : stuceshi.Find(s => s.id == 99999).name; //7.0533 #region try catch情况 18403 //for (int i = 0; i > -1000; i--) // 18403.0000 //{ // try //22.5663 // { // name1 = stuceshi.Find(s => s.id == -1).name; // } // catch (Exception) // { // name1 = ""; // } //} #endregion #region 自处理情况 3250 //for (int i = 0; i > -1000; i--) 时间0.3274~8490.0000(全比较是8490) //{ // name1 = stuceshi.Find(s => s.id == 99999) == null ? "" : stuceshi.Find(s => s.id == 99999).name; //} #endregion // 8双问号操作符 // string strParam= Request.Params["param"]?? ""; int?cc = null; int name4 = cc ?? 0; // 9 StartsWith() lstugroup = lstugroup.Where(s => s.name.StartsWith("l")).ToList(); // 筛选name以l开头; //lstugroup =lstugroup.Where(s => s.name.StartsWith("l")). //10 遍历集合 int ii = 0; foreach (stu item in lstugroup) { ii = lstugroup.IndexOf(item); } //11 处理Where,找不到是count=0而不报错。 lstugroup = lstugroup.Where(s => s.name.StartsWith("m")).ToList(); // 筛选name以l开头; //12 var g2 = lstugroup0101.GroupBy(x => new { x.id, x.age }); //lstugroup0101= g2.Where(v => v.Key ==3).ToList(); List <stu> dddd = new List <stu>(); foreach (var item in g2) { foreach (var item2 in item) { dddd.Add(item2); } } }//断点处