常用linq、lambda表达式整理
金蝶云社区-云社区用户C1k07307
云社区用户C1k07307
102人赞赏了该文章 2,446次浏览 未经作者许可,禁止转载编辑于2020年12月09日 11:59:05

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


本文转载自:博客园

作者:路在脚下

原文链接:https://www.cnblogs.com/qianlang/p/12068303.html

赞 102