1. 程式人生 > 其它 >C# 常用linq、lambda表示式

C# 常用linq、lambda表示式

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>();