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));
10、排序之后再排序
items = AllProductItems.OrderBy(x => x.Barcode.Length).ThenBy(x => x.Barcode);
11、根据条件分组,并获取数量最大的分组
var ArrayList = MaterialPlanList
.Where(n => n.EveryDeliveryDate == Convert.ToDateTime(input.beiginDates).AddDays(i))
.GroupBy(x => new { x.SupplierName, x.MaterialNum })
.Select(x => new
{
SupplierName = x.Key.SupplierName,
MaterialNum = x.Key.MaterialNum,
Num = x.Count()
})
.OrderByDescending(x => x.Num)
.FirstOrDefault();
//工序名称
var processNameList = list2
.Join(list3, x => x.ProcessID, y => y.processId,
(x, y) => new processNameModel
{
EAI_WORKORDER_ID = x.EAI_WORKORDER_ID,
ProcessName = x.ProcessName,
ProcessID = x.ProcessID,
ProcessIndex = x.ProcessIndex,
processFlowId = y.processFlowId
}
)
.OrderBy(s => new { s.processFlowId, s.ProcessIndex })
.ToList();
//工序合格数量
var gxhgList = list2
.Where(x => x.TestResult == "0")
.GroupBy(x => new { x.ProcessID })
.Select(x => new
{
ProcessID = x.Key.ProcessID,
gxhg = x.Count<makeDatatModel>()
})
.ToList(); //工序完成数量
var gxwcList = list2
.GroupBy(x => new { x.ProcessID })
.Select(x => new
{
ProcessID = x.Key.ProcessID,
gxwc = x.Count<makeDatatModel>()
})
.ToList(); //左侧数据
var rightList = processNameList
.Join(gxhgList, x => x.ProcessID, y => y.ProcessID,
(x, y) => new
{
EAI_WORKORDER_ID = x.EAI_WORKORDER_ID,
ProcessName = x.ProcessName,
ProcessID = x.ProcessID,
gxhg = y.gxhg,
}
)
.Join(gxwcList, x => x.ProcessID, y => y.ProcessID,
(x, y) => new
{
EAI_WORKORDER_ID = x.EAI_WORKORDER_ID,
ProcessName = x.ProcessName,
ProcessID = x.ProcessID,
gxhg = x.gxhg,
gxwc = y.gxwc,
}
)
// .OrderBy(s => new { s.processFlowId, s.ProcessIndex })
.ToList();
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>();
var TaskReportList = _plm_TaskReportRep.Entities.GroupBy(x => new { x.EXECUTORDEPARNAME, x.PROJECTPROP })
.Select(x => new
{
EXECUTORDEPARNAME = x.Key.EXECUTORDEPARNAME,
PROJECTPROP = x.Key.PROJECTPROP,
Num = x.Sum(x => x.PROJECTPROP)
}).ToList();