C#
IOrderedEnumerable<POSetModel> Iposet = datas.GroupJoin(session.
FindList<StyleLoadingEntity>()
.AsParallel().WithDegreeOfParallelism(Environment.ProcessorCount - 1) //使用Linq并行查询并指定查询处理器数量
.Where(x => GlobalConstants.Lines.Contains(x.LineNumber.ToInt(0)) || x.LineNumber == 0),
poset => poset.LoadChar_Id,
styleLoad => styleLoad.CreatedBy,
(poset, styleLoad) =>
{
var k = new POSetModel(poset);
k.IsCurrentlyLoading = styleLoad.Select(cl => cl?.IsCurrentlyLoading ?? false).FirstOrDefault();
k.LineNumber = styleLoad.Select(cl => cl?.LineNumber ?? 0).FirstOrDefault();
k.RouteID = styleLoad.Select(cl => cl?.RouteID ?? 0).FirstOrDefault();
k.Station = styleLoad.Select(cl => cl?.Workstation ?? 0).FirstOrDefault();
k.GroupID = styleLoad.Select(cl => cl?.GroupID ?? "").FirstOrDefault();
return k;
})
.AsParallel().WithDegreeOfParallelism(Environment.ProcessorCount-1) 并行化以及指定并行处理器数量保留一
C#
//并发使用List.AsParallel().ForAll替换Foreach
posetmodels.AsParallel().WithDegreeOfParallelism(Environment.ProcessorCount - 1).ForAll(item =>
{
_Producinggridmodels.Add(item);
});