private void 使用量検索() { //アクティブボタン = 在庫検索ボタンEnum.使用量; dg現在庫.Visible = false; dg使用量.Visible = true; dg不動品.Visible = false; dg後発品.Visible = false; // 空文字ならば、検索しない。 if (tb検索キーワード.Text.Replace(" ", "").Replace(" ", "").Equals("")) { //// カーソルをもとの状態にする //this.SetCursorDefault(); return; } bool 全期限 = false; int 期限加算月 = 3; if (ddl使用量検索.SelectedIndex == 0) { 全期限 = true; } else { 期限加算月 = Set使用量検索期限加算月(); } Service.File.Reader.FileReaderClient client = ReferenceCreater.GetFileReaderClient(); //var rdataset = client.Open使用量CSV(tb検索キーワード.Text, 全期限, 期限加算月); var rdataset = client.Open使用量2CSV(tb検索キーワード.Text, 全期限, 期限加算月); if (string.IsNullOrEmpty(rdataset.エラーメッセージ)) { var dataList = rdataset.検索結果データlist.ToList(); var 表示順序dic = Session["店舗名List"] as Dictionary <int, string>; if (表示順序dic == null) { return; } // 表示順序に登録されていない店舗があった場合に使用する臨時dic var CopyDic = GenericUtil.Copy(表示順序dic); int cnt = CopyDic.Count + 1; dataList.Sort( delegate(薬局使用量データ x, 薬局使用量データ y) { int xValue = 0; int yValue = 0; foreach (var d in CopyDic) { if (d.Value.Equals(x.店名)) { xValue = d.Key; } if (d.Value.Equals(y.店名)) { yValue = d.Key; } } // 一致するものがなかったら、臨時のcntの番号にする(表示順序が後ろ) bool xy店名が等しい = false; if (xValue == 0) { if (x.店名.Equals(y.店名)) { xy店名が等しい = true; } xValue = cnt; CopyDic.Add(cnt, x.店名); cnt++; } if (yValue == 0) { if (xy店名が等しい) { yValue = xValue; } else { yValue = cnt; CopyDic.Add(cnt, y.店名); cnt++; } } if (xValue != yValue) { return(xValue - yValue); } // 等しい場合は、さらに使用年月日で比較する if (xValue == yValue) { DateTime xの年月日; DateTime yの年月日; // xがDateTimeにキャストできない場合は、後ろに if (DateTime.TryParse(x.使用年月, out xの年月日) == false) { return(1); } // yがDateTimeにキャストできない場合は、前に if (DateTime.TryParse(y.使用年月, out yの年月日) == false) { return(-1); } if (xの年月日 > yの年月日) { return(-1); } else if (yの年月日 > xの年月日) { return(1); } } // 店名が等しく、使用年月も等しい場合は、医薬品名のアイウエオ順 if (xValue == yValue) { return(x.医薬品名.CompareTo(y.医薬品名)); } return(xValue - yValue); } ); dg使用量.DataSource = dataList; dg使用量.DataBind(); Set在庫検索結果Result(dataList.Count, rdataset.検索キーワード); } else { lbSearchResult.Text = rdataset.エラーメッセージ; } }