C# 常用linq、lambda表達式整理(持續更新中~~)


  這里介紹的是個人.net開發中使用到的一些linq和lambda表達式(java在jdk1.8中添加了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中使用Select()方法找出interval最大的那條數據

DataRow[] oTmp = dt.Select("interval = max(interval)");

  DataTable中Select()方法篩選不等於某條件的數據(使用"<>",不能使用“!=”,會報錯)

DataRow[] drs = dt.Select(string.Format(" type<> '{0}' ","2"));

7.以某字段為查詢條件,查詢DataTable中符合條件的數據

DataRow[] drs = dt.AsEnumerable().Where<DataRow>(m => m["name"].Equals("小明")).ToArray();   //找出DataTable中name為小明的數據

8.查詢DataRow[]中某列的值,取DataRow中第一個值

var unloadtime = drs.AsEnumerable().Select(t => t.Field<string>("unloadtime")).FirstOrDefault().ToString();

9.數組中以多個字段分組,再以某字段升序排序,再取第一個(以MODEL,PATTERN分組,再以ACCEPTTIME升序排序)

var arrFlowData = arrMESFlowData.AsEnumerable().GroupBy(t => new { t.MODEL, t.PATTERN }).Select(t => t.OrderBy(x => x.ACCEPTTIME).FirstOrDefault());

10.List中以Hours降序,再以DssCode升序排序(先按Hours降序,如果Hours相同再按DssCode升序。如果Hours為null或者為空,排序會出現混亂,待解決 O(≧口≦)O)

List<DMDXMould> list = dmdxDetail.listMouldLoad.OrderByDescending(t => t.Hours).ThenBy(t => t.DssCode).ToList();

 11.從DataTable中取出某列的值並返回一個List<int>集合

var list =dt.AsEnumerable().Select<DataRow, int>(x => Convert.ToInt32(x["列名"])).ToList<int>();

 12.DataTable使用Where篩選並排序(根據no和code篩選,再根據date和time降序排序)

DataRow[] drs = dt.AsEnumerable().Where<DataRow>(t => t["no"].Equals("FU123456") && t["code"].Equals("LFMJ03")).OrderByDescending(t => t["date"]).ThenByDescending(t => t["time"]).ToArray();

 

 

 

未完待續~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM