public PartialViewResult FilterProducts(ProductFilterModel model) { List<Product> p = new WCFProduct().GetProducts().ToList(); List<ProductModel> products = new List<ProductModel>(); foreach (Product pr in p) { ProductModel pm = new ProductModel(); pm.ID = pr.ID; pm.Features = pr.Features; pm.DateListed = pr.Date_Listed; pm.Name = pr.Name; pm.Image = pr.Image; pm.Price = (double)pr.Price; pm.StockAmount = pr.Stock_Amount; pm.AverageRate = new WCFProductClient().GetProductAverageRating(pr.ID); if (model.CategoryName != null) { if (pr.Category != null && pr.Category.Contains(model.CategoryName)) { products.Add(pm); } } else if (model.ProductName != null) { if (pm.Name.Contains(model.ProductName)) { products.Add(pm); } } else if (model.smallestPrice != 0 && model.greatestPrice != 0 && model.smallestPrice != null && model.greatestPrice != null) { if (pm.Price >= model.smallestPrice && pm.Price <= model.greatestPrice) { products.Add(pm); } } else { products.Add(pm); } if (model.sortByPrice == true) { if (model.sortDescending == true) { products = products.OrderByDescending(temP => temP.Price).ToList(); } else { products = products.OrderBy(temP => temP.Price).ToList(); } } } return PartialView("_Filters", products); }
private static void Expression(List<Student> list) { Console.WriteLine("\nInitial state:\n"); list.ForEach(x => Console.WriteLine(x)); Console.WriteLine("\nDescending order with expression\n"); List<Student> sort1 = list.OrderByDescending(x => x.FirstName) .ThenByDescending(x => x.LastName) .ToList(); sort1.ForEach(x => Console.WriteLine(x)); }
/// <summary> /// 读取json,反序列化为相册图片列表 /// </summary> public List<AlbumImageModel> GetAlbumImageList(string content, out AlbumImageModel cover) { List<AlbumImageModel> lst = new List<AlbumImageModel>(); cover = new AlbumImageModel(); try { string jsonnav = Utils.RemoveHtml(content).Replace("\n", "").Replace(" ", ""); if (jsonnav != "") { lst = Utils.ParseFromJson<List<AlbumImageModel>>(jsonnav); cover = lst.OrderByDescending(m => m.IsCover).FirstOrDefault(); } } catch (Exception) { } return lst; }
private static List<AlbumPhotoModel> GetAlbumPhotoList(string content, out AlbumPhotoModel cover) { var lst = new List<AlbumPhotoModel>(); cover = new AlbumPhotoModel(); try { var jsonnav = content.ExRemoveHtml().Replace("\n", "").Replace(" ", ""); if (jsonnav != "") { lst = Utils.ParseFromJson<List<AlbumPhotoModel>>(jsonnav); cover = lst.OrderByDescending(m => m.IsCover).FirstOrDefault(); } } catch { } return lst; }
public string GetDataByDateTime(string dateBegin, string dateEnd) { string result = ""; List<Dictionary<string, string>> listDic = new List<Dictionary<string, string>>(); listDic = GetOPInfoListForSpecimenByTimeRangeAndToDicList(dateBegin, dateEnd); List<RuRo.Model.ZSSY.OPListForSpecimen> list = new List<RuRo.Model.ZSSY.OPListForSpecimen>(); if (listDic.Count > 0) { //result = ConvertDicListToJsonStr(listDic); foreach (var item in listDic) { RuRo.Model.ZSSY.OPListForSpecimen model = new RuRo.Model.ZSSY.OPListForSpecimen(); RuRo.Common.ObjAndDic.DicToObject(item, model); if (model.KeepSpecimenSign=="N") { model.KeepSpecimenSign = ""; } list.Add(model); } list = list.OrderByDescending(a => a.KeepSpecimenSign).ToList(); result = Newtonsoft.Json.JsonConvert.SerializeObject(list); } return result; }
public ActiveEstimatedTask ChooseTask(EstimatedWorkflow workflow, List<IEnumerable<ActiveEstimatedTask>> tasks) { return tasks.OrderByDescending(t => GetTime(workflow, t.ElementAt(1)) - GetTime(workflow, t.ElementAt(0))).First().First(); }
public ActiveEstimatedTask ChooseTask(EstimatedWorkflow workflow, List<IEnumerable<ActiveEstimatedTask>> tasks) { return tasks.OrderByDescending(t => { var parent = workflow.Tasks.Single(wt => wt.Id == t.First().Id); var depsWaitingTime = parent.RequiresDependencies.Count == 0 ? 0 : parent.RequiresDependencies.Max(d => d.ScheduledInstance.Estimation.LaunchTime + d.ScheduledInstance.Estimation.Result.Time); var nodesWaitingTime = t.First().Estimation.NodesTimings.Max(n => n.GetAvailabilityTime()); var waitingTime = Math.Max(depsWaitingTime, nodesWaitingTime); return waitingTime + t.First().Estimation.Result.Time; }).First().First(); }
public PartialViewResult TopTenProductsWithFaults() { List<Product> products = new ProductServ.WCFProductClient().GetProducts().ToList(); List<ReportModel> pr = new List<ReportModel>(); foreach (Product p in products) { int faultNum = new BAFuncServ.WCFBAFuncClient().GetFaultNum(p.ID); ReportModel rp = new ReportModel(); rp.Name = p.Name; rp.Features = p.Features; rp.Img = p.Image; rp.Number_Faults = faultNum; pr.Add(rp); } List<ReportModel> prSorted = pr.OrderByDescending(x => x.Number_Faults).ToList(); return PartialView("_TopTenProductsWithFaults",prSorted); }
public ReturnValueInfo UpdateRechargeRecord(List<PreRechargeRecord_prr_Info> listRecord, List<RechargeRecord_rcr_Info> listRecharges, decimal fPreCostRecharge) { ReturnValueInfo rvInfo = new ReturnValueInfo(); #region 检查条件合法性 if (listRecord == null) { rvInfo.isError = true; rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull + Environment.NewLine + "预充值记录。"; return rvInfo; } if (listRecharges == null) { rvInfo.isError = true; rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull + Environment.NewLine + "实际充值记录。"; return rvInfo; } if (listRecharges != null && listRecharges.Count < 1) { rvInfo.isError = true; rvInfo.messageText = "需要录入的充值记录不能为空。"; return rvInfo; } if (listRecord != null && listRecord.Count < 1) { rvInfo.isError = true; rvInfo.messageText = "需要更新的充值记录不能为空。"; return rvInfo; } #endregion try { using (SIOTSDB_HHZXDataContext db = new SIOTSDB_HHZXDataContext()) { //用于批量统一插数 List<PreConsumeRecord_pcs> listToInsertPreCost = new List<PreConsumeRecord_pcs>(); List<CardUserAccountDetail_cuad> listToInsertAccountDetail = new List<CardUserAccountDetail_cuad>(); List<SystemAccountDetail_sad> listToInsertSysDetail = new List<SystemAccountDetail_sad>(); List<RechargeRecord_rcr> listToInsertRecharge = new List<RechargeRecord_rcr>(); //获取账户信息 CardUserAccount_cua account = db.CardUserAccount_cua.Where(x => x.cua_cCUSID == listRecharges[0].rcr_cUserID).FirstOrDefault(); #region 账户信息丢失时,自动创建账户信息 if (account == null) { account = new CardUserAccount_cua(); account.cua_cRecordID = Guid.NewGuid(); account.cua_cCUSID = listRecharges[0].rcr_cUserID; account.cua_cAdd = listRecharges[0].rcr_cLast; account.cua_dAddDate = DateTime.Now; account.cua_dLastSyncTime = DateTime.Now; account.cua_lIsActive = true; account.cua_fCurrentBalance = decimal.Zero; account.cua_fOriginalBalance = decimal.Zero; db.CardUserAccount_cua.InsertOnSubmit(account); db.SubmitChanges(); } #endregion //充值总额 decimal fSumRecharge = decimal.Zero; //待添加的实际充值记录 List<RechargeRecord_rcr> listRechargeInserts = new List<RechargeRecord_rcr>(); //待添加的的用户账户数据 List<CardUserAccountDetail_cuad> listUserAccountInfos = new List<CardUserAccountDetail_cuad>(); //待添加的系统账户数据 List<SystemAccountDetail_sad> listSysAccountInfos = new List<SystemAccountDetail_sad>(); //更新已经使用的转账充值记录 #region 更新已被使用的预充值记录状态为已完成,并插入实际充值记录并记录账户收入记录 foreach (PreRechargeRecord_prr_Info preRechargeItem in listRecord) { if (preRechargeItem == null) { continue; } PreRechargeRecord_prr preRecord = db.PreRechargeRecord_prr.Where(x => x.prr_cRecordID == preRechargeItem.prr_cRecordID).FirstOrDefault(); if (preRecord != null) { //添加实际消费记录 RechargeRecord_rcr_Info rechargeInfo = listRecharges.Find(x => x.rcr_cRecordID == preRechargeItem.prr_cRCRID); if (rechargeInfo != null) { RechargeRecord_rcr recharge = Common.General.CopyObjectValue<RechargeRecord_rcr_Info, RechargeRecord_rcr>(rechargeInfo); if (recharge != null) { rechargeInfo.rcr_dRechargeTime = DateTime.Now; rechargeInfo.rcr_dLastDate = DateTime.Now; listRechargeInserts.Add(recharge); } } preRecord.prr_cRCRID = rechargeInfo.rcr_cRecordID; preRecord.prr_cStatus = Common.DefineConstantValue.ConsumeMoneyFlowStatus.Finished.ToString(); preRecord.prr_cLast = preRechargeItem.prr_cLast; preRecord.prr_dLastDate = preRechargeItem.prr_dLastDate; //累积充值记录 fSumRecharge += preRechargeItem.prr_fRechargeMoney; //用户账户 CardUserAccountDetail_cuad userAccountDetail = new CardUserAccountDetail_cuad(); userAccountDetail.cuad_cRecordID = Guid.NewGuid(); userAccountDetail.cuad_cConsumeID = rechargeInfo.rcr_cRecordID; userAccountDetail.cuad_cCUAID = account.cua_cRecordID; userAccountDetail.cuad_cFlowType = rechargeInfo.rcr_cRechargeType; userAccountDetail.cuad_cOpt = rechargeInfo.rcr_cLast; userAccountDetail.cuad_dOptTime = DateTime.Now; userAccountDetail.cuad_fFlowMoney = preRechargeItem.prr_fRechargeMoney;//金额与预充值额全额一致 listUserAccountInfos.Add(userAccountDetail); //系统账户 SystemAccountDetail_sad sysAccount = new SystemAccountDetail_sad(); sysAccount.sad_cRecordID = Guid.NewGuid(); sysAccount.sad_cConsumeID = rechargeInfo.rcr_cRecordID; sysAccount.sad_cDesc = Common.DefineConstantValue.GetMoneyFlowDesc(rechargeInfo.rcr_cRechargeType); sysAccount.sad_cFLowMoney = preRechargeItem.prr_fRechargeMoney;//金额与预充值额全额一致 sysAccount.sad_cFlowType = rechargeInfo.rcr_cRechargeType; sysAccount.sad_cOpt = rechargeInfo.rcr_cLast; sysAccount.sad_dOptTime = DateTime.Now; listSysAccountInfos.Add(sysAccount); } } #endregion if (listUserAccountInfos.Count > 0) { //插入由充值记录产生的账户记录 listToInsertRecharge.AddRange(listRechargeInserts); listToInsertAccountDetail.AddRange(listUserAccountInfos); listToInsertSysDetail.AddRange(listSysAccountInfos); } //查找用户是否含有透支预存款记录 decimal fAdvance = decimal.Zero; #region 获取用户的透支金额 List<RechargeRecord_rcr> listAdvance = db.RechargeRecord_rcr.Where(x => x.rcr_cUserID == listRechargeInserts[0].rcr_cUserID && x.rcr_cRechargeType == Common.DefineConstantValue.ConsumeMoneyFlowType.Recharge_AdvanceMoney.ToString() ).ToList(); if (listAdvance != null && listAdvance.Count > 0) { fAdvance = listAdvance.OrderByDescending(x => x.rcr_dRechargeTime).FirstOrDefault().rcr_fRechargeMoney; } #endregion decimal fCurrentBalance = decimal.Zero; fPreCostRecharge = Math.Abs(fPreCostRecharge); decimal fSumPreCost = decimal.Zero;//记录欠款总额 //获取本次充值的最后余额 //decimal fCardBalance = listRechargeInserts.Max(x => x.rcr_fBalance); decimal fCardBalance = listRechargeInserts.OrderByDescending(x => x.rcr_dRechargeTime).FirstOrDefault().rcr_fBalance; if (fPreCostRecharge >= 0 && listRechargeInserts.Count > 0)//若存在需要支付预付款的金额,则进行平数处理 { //若预付款还款值大于0,则更新被支付的未结算预付款记录 #region 结算预付款项 List<PreConsumeRecord_pcs> listPreCost = db.PreConsumeRecord_pcs.Where(x => x.pcs_lIsSettled == false //需为未支付金额 && x.pcs_cAccountID == account.cua_cRecordID//需要账户对口 && x.pcs_cUserID == listRechargeInserts[0].rcr_cUserID //需要对口人员ID ).ToList(); //筛选预付款的消费类型 listPreCost = filterRecord_CanComputePreCost(listPreCost); fSumPreCost = listPreCost.Sum(x => x.pcs_fCost); if (Math.Abs(fPreCostRecharge) < Math.Abs(fSumPreCost)) { rvInfo.messageText = "支付额不足以支付待结算的预付款。"; return rvInfo; } List<CardUserAccountDetail_cuad> listPreUserCost = new List<CardUserAccountDetail_cuad>(); List<SystemAccountDetail_sad> listPreSysIncome = new List<SystemAccountDetail_sad>(); foreach (PreConsumeRecord_pcs preItem in listPreCost) { preItem.pcs_lIsSettled = true; preItem.pcs_dSettleTime = DateTime.Now; //结算的同时插入一条用户账户支出记录 CardUserAccountDetail_cuad userAccountDetail = new CardUserAccountDetail_cuad(); userAccountDetail.cuad_cConsumeID = preItem.pcs_cRecordID; userAccountDetail.cuad_cCUAID = account.cua_cRecordID; userAccountDetail.cuad_cFlowType = preItem.pcs_cConsumeType; userAccountDetail.cuad_cOpt = listRechargeInserts[0].rcr_cLast; userAccountDetail.cuad_cRecordID = Guid.NewGuid(); userAccountDetail.cuad_dOptTime = DateTime.Now; userAccountDetail.cuad_fFlowMoney = preItem.pcs_fCost; listPreUserCost.Add(userAccountDetail); //结算的同时插入一条系统账户收入记录 SystemAccountDetail_sad sysAccount = new SystemAccountDetail_sad(); sysAccount.sad_cConsumeID = preItem.pcs_cRecordID; sysAccount.sad_cDesc = Common.DefineConstantValue.GetMoneyFlowDesc(preItem.pcs_cConsumeType); sysAccount.sad_cFLowMoney = preItem.pcs_fCost; sysAccount.sad_cFlowType = preItem.pcs_cConsumeType; sysAccount.sad_cOpt = listRechargeInserts[0].rcr_cLast; sysAccount.sad_cRecordID = Guid.NewGuid(); sysAccount.sad_dOptTime = DateTime.Now; listPreSysIncome.Add(sysAccount); } if (listPreUserCost.Count > 0) { listToInsertAccountDetail.AddRange(listPreUserCost); listToInsertSysDetail.AddRange(listPreSysIncome); } #endregion //扣减预支款 fCardBalance -= fAdvance; //账户余额 decimal fAccountUpdate = account.cua_fCurrentBalance + fSumRecharge - fSumPreCost; if (fAccountUpdate > fCardBalance) { #region 平数处理 //【系统账户余额】 大于 【卡实际余额】 // 新增一条平数的预扣费记录 decimal fUnconfirmCost = fAccountUpdate - fCardBalance; PreConsumeRecord_pcs unconfirmRecord = new PreConsumeRecord_pcs(); unconfirmRecord.pcs_cRecordID = Guid.NewGuid(); unconfirmRecord.pcs_cAccountID = account.cua_cRecordID; unconfirmRecord.pcs_cAdd = listRechargeInserts[0].rcr_cLast; unconfirmRecord.pcs_cConsumeType = DefineConstantValue.ConsumeMoneyFlowType.HedgeFund.ToString(); unconfirmRecord.pcs_cUserID = listRechargeInserts[0].rcr_cUserID; unconfirmRecord.pcs_dAddDate = DateTime.Now; unconfirmRecord.pcs_dConsumeDate = DateTime.Now; unconfirmRecord.pcs_fCost = fUnconfirmCost; unconfirmRecord.pcs_lIsSettled = false; listToInsertPreCost.Add(unconfirmRecord); //用户账户 CardUserAccountDetail_cuad userAccountDetail = new CardUserAccountDetail_cuad(); userAccountDetail.cuad_cRecordID = Guid.NewGuid(); userAccountDetail.cuad_cConsumeID = unconfirmRecord.pcs_cRecordID; userAccountDetail.cuad_cCUAID = account.cua_cRecordID; userAccountDetail.cuad_cFlowType = unconfirmRecord.pcs_cConsumeType; userAccountDetail.cuad_cOpt = listRechargeInserts[0].rcr_cLast; userAccountDetail.cuad_dOptTime = DateTime.Now; userAccountDetail.cuad_fFlowMoney = fUnconfirmCost; listToInsertAccountDetail.Add(userAccountDetail); //系统账户 SystemAccountDetail_sad sysAccount = new SystemAccountDetail_sad(); sysAccount.sad_cRecordID = Guid.NewGuid(); sysAccount.sad_cConsumeID = unconfirmRecord.pcs_cRecordID; sysAccount.sad_cDesc = DefineConstantValue.GetMoneyFlowDesc(unconfirmRecord.pcs_cConsumeType); sysAccount.sad_cFLowMoney = fUnconfirmCost; sysAccount.sad_cFlowType = unconfirmRecord.pcs_cConsumeType; sysAccount.sad_cOpt = listRechargeInserts[0].rcr_cLast; sysAccount.sad_dOptTime = DateTime.Now; listToInsertSysDetail.Add(sysAccount); #endregion } fCurrentBalance = fCardBalance; } else { fCurrentBalance = fCardBalance - fAdvance; } try { db.Connection.Open(); db.Transaction = db.Connection.BeginTransaction(); if (listToInsertRecharge != null && listToInsertRecharge.Count > 0) db.RechargeRecord_rcr.InsertAllOnSubmit(listToInsertRecharge); if (listToInsertPreCost != null && listToInsertPreCost.Count > 0) db.PreConsumeRecord_pcs.InsertAllOnSubmit(listToInsertPreCost); if (listToInsertAccountDetail != null && listToInsertAccountDetail.Count > 0) db.CardUserAccountDetail_cuad.InsertAllOnSubmit(listToInsertAccountDetail); if (listToInsertSysDetail != null && listToInsertSysDetail.Count > 0) db.SystemAccountDetail_sad.InsertAllOnSubmit(listToInsertSysDetail); account.cua_dLastSyncTime = DateTime.Now; account.cua_fCurrentBalance = fCurrentBalance; db.SubmitChanges(); db.Transaction.Commit(); rvInfo.boolValue = true; rvInfo.ValueObject = DateTime.Now; return rvInfo; } catch (Exception exx) { db.Transaction.Rollback(); db.Connection.Close(); throw exx; } } } catch (Exception ex) { rvInfo.isError = true; rvInfo.messageText = ex.Message; } return rvInfo; }
private static string Expression(List<string> someStrings) { var selected = someStrings.OrderByDescending(s => s.Length).FirstOrDefault(); return selected; }
/// <summary> /// 转换充值信息 /// </summary> /// <param name="listRechargeRecord"></param> /// <returns></returns> List<RechargeInfo> getRechargeInfo(List<RechargeRecord_rcr_Info> listRechargeRecord) { List<RechargeInfo> listRechargeInfo = null; try { if (listRechargeRecord != null) { listRechargeInfo = new List<RechargeInfo>(); listRechargeRecord = listRechargeRecord.OrderByDescending(x => x.rcr_dRechargeTime).ToList(); for (int i = 0; i < listRechargeRecord.Count; i++) { try { RechargeInfo info = new RechargeInfo(); info.ID = i + 1; info.RecordID = listRechargeRecord[i].rcr_cRecordID; info.RechargeType = Common.DefineConstantValue.GetMoneyFlowDesc(listRechargeRecord[i].rcr_cRechargeType); info.RechargeTime = listRechargeRecord[i].rcr_dRechargeTime; info.RechargeMoney = listRechargeRecord[i].rcr_fRechargeMoney; listRechargeInfo.Add(info); } catch (Exception exx) { base.MessageDialog("提示", exx.Message); } } } } catch (Exception ex) { base.MessageDialog("提示", ex.Message); } return listRechargeInfo; }
public static IEnumerable<RealTimeCommission> GetCustomerRealTimeCommissions(GetCustomerRealTimeCommissionsRequest request) { var results = new List<RealTimeCommission>(); // Get the commission record var realtimeresponse = Exigo.WebService().GetRealTimeCommissions(new Common.Api.ExigoWebService.GetRealTimeCommissionsRequest { CustomerID = request.CustomerID }); if (realtimeresponse.Commissions.Length == 0) return results; // Get the unique periods for each of the commission results var periods = new List<Period>(); var periodRequests = new List<GetPeriodsRequest>(); foreach (var commissionResponse in realtimeresponse.Commissions) { var periodID = commissionResponse.PeriodID; var periodTypeID = commissionResponse.PeriodType; var req = periodRequests.Where(c => c.PeriodTypeID == periodTypeID).FirstOrDefault(); if (req == null) { periodRequests.Add(new GetPeriodsRequest() { PeriodTypeID = periodTypeID, PeriodIDs = new int[] { periodID } }); } else { var ids = req.PeriodIDs.ToList(); ids.Add(periodID); req.PeriodIDs = ids.Distinct().ToArray(); } } foreach (var req in periodRequests) { var responses = GetPeriods(req); foreach (var response in responses) { periods.Add(response); } } // Get the volumes for each unique period var volumeCollections = new List<VolumeCollection>(); foreach (var period in periods) { volumeCollections.Add(GetCustomerVolumes(new GetCustomerVolumesRequest { CustomerID = request.CustomerID, PeriodID = period.PeriodID, PeriodTypeID = period.PeriodTypeID, VolumeIDs = request.VolumeIDs })); } // Process each commission response try { foreach (var commission in realtimeresponse.Commissions) { var typedCommission = (RealTimeCommission)commission; typedCommission.Period = periods .Where(c => c.PeriodTypeID == commission.PeriodType) .Where(c => c.PeriodID == commission.PeriodID) .FirstOrDefault(); typedCommission.Volumes = volumeCollections .Where(c => c.Period.PeriodTypeID == typedCommission.Period.PeriodTypeID) .Where(c => c.Period.PeriodID == typedCommission.Period.PeriodID) .FirstOrDefault(); typedCommission.PaidRank = typedCommission.Volumes.PayableAsRank; results.Add(typedCommission); } return results.OrderByDescending(c => c.Period.StartDate); } catch { return results; } }
/// <summary> /// メンバの打順とポジションを設定 /// </summary> /// <param name="allPlayers">全選手一覧(スタメン選定時に同じ能力なら並び順が先を優先)</param> private void SetMembers(List<Player> allPlayers) { // 各ポジションごとに強い順に新しいスタメンを設定 List<GameMember> newGameMembers = new List<GameMember>(); List<GameMember> newOutsideMembers = new List<GameMember>(); List<DefensePosition> pendingPositions = new List<DefensePosition>(); foreach (DefensePosition position in DefensePositionHelper.GetEnums) { Player player; // 守備適正のあるメンバのうち、総合力が最も高いメンバを選定する if (position == DefensePosition.Pitcher) { // コンバートにより投手でも存在しないことがありえるためFirstOrDefaultメソッドで取得 player = allPlayers.Where(m => DefenseTypeHelper.FitDefensePosition(position, m.FielderAbility.DefenseType)).OrderByDescending(m => m.PitcherAbility.Total).FirstOrDefault(); } else { player = allPlayers.Where(m => DefenseTypeHelper.FitDefensePosition(position, m.FielderAbility.DefenseType)).OrderByDescending(m => m.FielderAbility.Total).FirstOrDefault(); } if (player != null) { // 新しいメンバをスタメンに追加 GameMember member = new GameMember(player, position); newGameMembers.Add(member); // 選手一覧から追加メンバを削除 allPlayers.Remove(player); } else { // 適切な守備適性のメンバが存在せずnullの場合は再検討 pendingPositions.Add(position); } } // 適切な守備適性でスタメンが埋まらない場合は、適当に総合力の高い順に選定 if (pendingPositions.Count > 0) { foreach (DefensePosition position in pendingPositions) { // 概ね適正のある守備位置から選定 Player player = allPlayers.Where(m => DefenseTypeHelper.MostFitDefensePosition(position, m.FielderAbility.DefenseType)) .OrderByDescending(m => m.FielderAbility.Total).FirstOrDefault(); // 概ねの適性もなければ投手以外で適当に選定 if (player == null) { player = allPlayers.OrderBy(m => m.IsPitcher).ThenByDescending(m => m.FielderAbility.Total).First(); } // 新しいメンバをスタメンに追加 GameMember member = new GameMember(player, position); newGameMembers.Add(member); // 選手一覧から追加メンバを削除 allPlayers.Remove(player); } } // この時点で9人となるはず Assertion.Assert(newGameMembers.Count == 9, "newGameMembers.Count == 9"); // 打順は、以下の順にメンバの能力値で決める // 9:投手(投手でも打撃強い場合があるが交代も考慮して9番とする) // 4:[ミート+パワー×2]トップ(初期設定で友沢亮が4番になりにくくするため長打力を重視) // 1:[ミート+走力]トップ // 3:打者能力トップ // 2:[ミート+智力]トップ // 5:打者能力トップ // 6:打者能力トップ // 7:打者能力トップ // 8:打者能力トップ GameMember member9 = newGameMembers.OrderByDescending(m => m.DefensePosition == DefensePosition.Pitcher).First(); newGameMembers.Remove(member9); GameMember member4 = newGameMembers.OrderByDescending(m => m.Meet + m.Power * 2).First(); newGameMembers.Remove(member4); GameMember member1 = newGameMembers.OrderByDescending(m => m.Meet + m.Run).First(); newGameMembers.Remove(member1); GameMember member3 = newGameMembers.OrderByDescending(m => m.BatterAbility).First(); newGameMembers.Remove(member3); GameMember member2 = newGameMembers.OrderByDescending(m => m.Meet + m.Wisdom).First(); newGameMembers.Remove(member2); GameMember member5 = newGameMembers.OrderByDescending(m => m.BatterAbility).First(); newGameMembers.Remove(member5); GameMember member6 = newGameMembers.OrderByDescending(m => m.BatterAbility).First(); newGameMembers.Remove(member6); GameMember member7 = newGameMembers.OrderByDescending(m => m.BatterAbility).First(); newGameMembers.Remove(member7); GameMember member8 = newGameMembers.OrderByDescending(m => m.BatterAbility).First(); newGameMembers.Remove(member8); // 一番から打順の順番で追加し直す newGameMembers.Add(member1); newGameMembers.Add(member2); newGameMembers.Add(member3); newGameMembers.Add(member4); newGameMembers.Add(member5); newGameMembers.Add(member6); newGameMembers.Add(member7); newGameMembers.Add(member8); newGameMembers.Add(member9); // 控えとベンチ外メンバの設定 while (allPlayers.Count > 0) { // まず控え投手を優先する Player player = allPlayers.Where(m => m.IsPitcher).OrderByDescending(m => m.PitcherAbility.Total).FirstOrDefault(); if (player == null) { // 投手がいなければ、野手総合力の高い順に選定 player = allPlayers.OrderByDescending(m => m.FielderAbility.Total).First(); } GameMember member = new GameMember(player, DefensePosition.Sub); // 控えメンバが埋まるまでは控え、埋まったらベンチ外に追加 if (newGameMembers.Count < Constants.BenchMemberCount) { newGameMembers.Add(member); } else { newOutsideMembers.Add(member); } allPlayers.Remove(player); } // 最後にチーム設定に反映 TeamSetting.DefaultGameMembers = newGameMembers; TeamSetting.DefaultOutSideMembers = newOutsideMembers; // デフォルトのメンバ設定をもとに現在試合メンバ設定に反映 // (間違って現在試合メンバ設定にアクセスしても問題ないように同期させておく) TeamSetting.CreateCurrentMembersFromDefault(); }
/// <summary> /// /// </summary> /// <param name="dids"></param> /// <param name="gids"></param> /// <param name="pageSize"></param> /// <param name="pageIndex"></param> /// <param name="rowCount"></param> /// <returns></returns> protected List<P_PersonInfo> GetPersonListByGroupDepartment(string dids, string gids,out int rowCount, int pageSize=-1,int pageIndex=-1) { List<int> list_dids = new List<int>(); List<int> list_gids = new List<int>(); if (dids != "") { var list_dids_temp = (from g in dids.Split(',') where g != "" select g).ToList(); list_dids_temp.ForEach(g => list_dids.Add(int.Parse(g))); } if (gids != "") { var list_gids_temp = (from g in gids.Split(',') where g != "" select g).ToList(); list_gids_temp.ForEach(g => list_gids.Add(int.Parse(g))); } //2 根据department以及group的id查询其对应的Person对象集合 List<P_PersonInfo> list_person = new List<P_PersonInfo>(); var list_department = departmentBLL.GetListByIds(list_dids); list_department.ForEach(d => list_person.AddRange(d.P_PersonInfo)); var list_group = groupBLL.GetListByIds(list_gids); list_group.ForEach(g => list_person.AddRange(g.P_PersonInfo)); //3 将联系人集合去重 list_person = list_person.Distinct(new P_PersonEqualCompare()).ToList().Select(p => p.ToMiddleModel()).ToList(); list_person = list_person.OrderByDescending(a => a.isVIP).ToList(); rowCount = list_person.Count(); if (pageIndex != -1 && pageSize != -1) { //分页 list_person = list_person.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); } return list_person; }
private static int GetUpperLimit(int size, int[,] matrix) { var topElements1 = new List<int>(); for (int i = 0; i < size; i++) { int maxx = 0; for (int j = 0; j < size; j++) { if (matrix[j, i] > maxx) maxx = matrix[j, i]; } topElements1.Add(maxx); } var topElements2 = new List<int>(); for (int i = 0; i < size; i++) { int maxx = 0; for (int j = 0; j < size; j++) { if (matrix[i, j] > maxx) maxx = matrix[i, j]; } topElements2.Add(maxx); } int sumTopElement1 = topElements1.OrderByDescending(x => x).Take(size - 1).Sum(); int sumTopElement2 = topElements2.OrderByDescending(x => x).Take(size - 1).Sum(); int sumTopElement = Math.Min(sumTopElement1, sumTopElement2); return sumTopElement; }
/// <summary> /// 獲取顯示用的停機記錄列表,並返回停機時長 /// </summary> /// <param name="listMacHaltRecord">停機記錄列表</param> /// <param name="tsTotal">停機時長</param> /// <returns>顯示用的停機記錄列表</returns> public override List<ProjectMachineHaltRecordShow> GetProfileMachineHaltRecord(List<ProjectMachineHaltRecord> listMacHaltRecord, out TimeSpan tsTotal) { tsTotal = new TimeSpan(); if (listMacHaltRecord == null) { return null; } listMacHaltRecord = listMacHaltRecord.OrderByDescending(x => x.psrd_dBeginTime).ToList(); List<ProjectMachineHaltRecordShow> listHaltShow = new List<ProjectMachineHaltRecordShow>(); int iRecIndex = 0; foreach (ProjectMachineHaltRecord itemHalt in listMacHaltRecord) { if (itemHalt != null) { ProjectMachineHaltRecordShow itemHaltShow = new ProjectMachineHaltRecordShow(itemHalt); if (itemHaltShow.MacHaltTimeSpan != null) { tsTotal += itemHaltShow.MacHaltTimeSpan.Value; } if (itemHaltShow.StopReasons != null && base.MachineHaltReasons != null) { int iReasonIndex = 0; foreach (ProjectMachineHaltRecordReason itemReason in itemHaltShow.StopReasons) { ProjectBaseItemModel reasonBase = base.MachineHaltReasons.Where(x => x.Code.Trim() == itemReason.StopReasonID.ToString()).FirstOrDefault(); if (reasonBase != null) { itemHaltShow.MacHaltItemsDesc += (iReasonIndex + 1).ToString() + "." + reasonBase.Description + ";"; iReasonIndex++; } } } itemHaltShow.RecordIndex = iRecIndex + 1; iRecIndex++; listHaltShow.Add(itemHaltShow); } } return listHaltShow; }
/// <summary> /// 獲取指定品檢記錄的品檢問題顯示記錄列表 /// </summary> /// <param name="listQCRecords">指定的品檢列表</param> /// <returns>指定品檢記錄的顯示用列表</returns> private List<QCPloblemViewInfo> GetQCViewInfos(List<ProjectQCRecord> listQCRecords) { List<QCPloblemViewInfo> listQCViewInfos = null; List<ProjectQCQualityIssues> listIssues = base.QCQualityIssues; if (listQCRecords != null) { listQCViewInfos = new List<QCPloblemViewInfo>(); foreach (ProjectQCRecord itemQCRec in listQCRecords) { if (itemQCRec.QCProblems != null) { foreach (ProjectQCRecordProblem itemProblem in itemQCRec.QCProblems) { if (itemProblem != null) { QCPloblemViewInfo qcViewInfo = GetQCViewInfo(itemQCRec, itemProblem.RecordID); if (qcViewInfo != null) { listQCViewInfos.Add(qcViewInfo); } } } if (itemQCRec.QCProblems.Count == 1) { QCPloblemViewInfo qcViewInfo = listQCViewInfos.Where(x => x.RecordID == itemQCRec.RecordID).FirstOrDefault(); if (qcViewInfo.ProblemID < 1) { qcViewInfo.ProblemSeq = "無問題"; } } } } listQCViewInfos = listQCViewInfos.OrderByDescending(x => x.pqc_iQCTimes).ToList(); } return listQCViewInfos; }