C# 常用linq、lambda表示式
阿新 • • 發佈:2022-03-30
1.在List中查詢某元素,並返回另一個List List<string> listLoadMouldNo = listAllLoad.Select(m => m.MouldNo).ToList(); //查詢出了listAllLoad中MouldNo元素,並放入另一個List. 2.篩選出List中符合條件的,放入另一個List List<DMDXSeg> lstSeg = listAllDMDX.Where(m => m.SegCode == 1012).ToList(); 3.找出List中某元素值包含於另一個List中的,放入另一個List List<DMDXSeg> list = listAllInv.Where(m => listAllMould.Contains(m.MouldNo)).ToList(); //找出listAllInv中MouldNo在listAllMould中存在的部分 4.去重,以List中某元素為基準,去除次元素相同的記錄 List<MouldDMDXInfo> listBM_Distinct = listAllMouldBM.Where((m, i) => listAllMouldBM.FindIndex(z => z.MouldNo == m.MouldNo) == i).ToList(); //去除MouldNo相同的記錄 5.以List中某元素為查詢條件,判斷List中是否存在資料 list.Exists(x => x.NGTYPE == 1); //判斷List是否存在NGTYPE為1的元素 6.找出DataTable中interval最大的那條資料 DataRow[] oTmp = dt.Select("interval = max(interval)"); 7.以某欄位為查詢條件,查詢DataTable中符合條件的資料 DataRow[] drs = dt.AsEnumerable().Where<DataRow>(m => m["name"].Equals("小明")).ToArray(); //找出DataTable中name為小明的資料 8、降序: lstroot.Sort((x,y)=>y.static_count.CompareTo(x.static_count)); 9、升序: lstroot.Sort((x,y)=>x.static_count.CompareTo(y.static_count));
Linq表示式: //按學號降序 List<Student> stuList = (from s instu orderby s.stuNOdescending select s).ToList<Student>(); //按學號升序 List<Student> stuList = (from s instu orderby s.stuNO select s).ToList<Student>(); 使用Lambda表示式排序: //按學號降序 單欄位:List<Student> stuList= stu.OrderByDescending(s=> s.orderid).ToList<Student>(); 多欄位:List<Student> stuList= stu.OrderByDescending(s=> new{s.stuNO,s.stuName}).ToList<Student>(); //按學號升序 單欄位:List<Student> stuList= stu.OrderBy(s=> s.stuNO).ToList<Student>(); 多欄位:List<Student> stuList= stu.OrderBy(s=> new{s.stuNO,s.stuName}).ToList<Student>(); 多欄位主次順序排序情況,先按no排序,再按name排序 List<Student> stuList= stu.OrderBy(s=> s.stuNO).ThenBy(s=> s.stuName).ToList<Student>(); List<Student> stuList= stu.OrderBy(s=> new{ s.stuNO }).ThenBy(s=> new{s.stuName}).ToList<Student>();