using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Data.Common; using System.Text; using System.Xml.Linq; using Wellan.Data; /// /// 人員派遣資料的資料處理類別 /// public class RasnDAC : Wellan.Data.WDAC { private DbCommand cmdSelectRasnRapyn = null; private DbCommand cmdSelectRasb = null; private DbCommand cmdSelectRasnOne = null; private DbCommand cmdSelectRasbOne = null; private DbCommand cmdSelectRasnAll = null; private DbCommand cmdSelectRasnAll2 = null; public RasnDAC() { string selectRasn = @"SELECT A.RANUM, A.RAITM, 0 AS RBITM, NULL AS RBBDT, A.RACNM, A.RAPYN, A.RASDT, A.RAEDT, A.RAJNO, A.RACNO, A.RABRH, A.RAS01, A.RAWTZ, A.APPNO, B.BPSRM, B.BPSRD, B.BPP01, B.BPP02, B.BPP03, B.BPP04, B.BPP05 FROM RASN A INNER JOIN BPJB B ON A.RAPYN=B.BPPYN AND A.RAJNO=B.BPJNO AND A.RACNO=B.BPCNO WHERE A.RANUM=@RANUM AND A.RAITM=@RAITM"; string selectRasb = @"SELECT A.RANUM, A.RAITM, B.RBITM, B.RBBDT, A.RACNM, A.RAPYN, A.RASDT, A.RAEDT, B.RAJNO, B.RACNO, B.RABRH, A.RAS01, A.RAWTZ, B.APPNO, C.BPSRM, C.BPSRD, C.BPP01, C.BPP02, C.BPP03, C.BPP04, C.BPP05 FROM RASN A INNER JOIN RASB B ON A.RANUM=B.RANUM AND A.RAITM=B.RAITM INNER JOIN BPJB C ON A.RAPYN=C.BPPYN AND B.RAJNO=C.BPJNO AND B.RACNO=C.BPCNO WHERE A.RANUM=@RANUM AND A.RAITM=@RAITM"; // 取出最後一筆異動 cmdSelectRasb = Query.NewCommand( "SELECT TOP 1 * FROM ( " + selectRasn + " UNION " + selectRasb + " ) TMP ORDER BY RBITM DESC"); cmdSelectRasb.Parameters.Add(Query.NewParameter("RANUM", DbType.String)); cmdSelectRasb.Parameters.Add(Query.NewParameter("RAITM", DbType.Int32)); // 取出某一筆員工派遣資料 cmdSelectRasnOne = Query.NewCommand(selectRasn); cmdSelectRasnOne.Parameters.Add(Query.NewParameter("RANUM", DbType.String)); cmdSelectRasnOne.Parameters.Add(Query.NewParameter("RAITM", DbType.Int32)); // 取出某一筆員工派遣異動資料 cmdSelectRasbOne = Query.NewCommand(selectRasb + " AND B.RBITM=@RBITM"); cmdSelectRasbOne.Parameters.Add(Query.NewParameter("RANUM", DbType.String)); cmdSelectRasbOne.Parameters.Add(Query.NewParameter("RAITM", DbType.Int32)); cmdSelectRasbOne.Parameters.Add(Query.NewParameter("RBITM", DbType.Int32)); // 取出某員工編號全部的紀錄,以異動次數排序 cmdSelectRasnAll = Query.NewCommand(selectRasn + " UNION " + selectRasb + " ORDER BY RBITM"); cmdSelectRasnAll.Parameters.Add(Query.NewParameter("RANUM", DbType.String)); cmdSelectRasnAll.Parameters.Add(Query.NewParameter("RAITM", DbType.Int32)); // 取出某員工編號全部的紀錄,以生效日期排序 cmdSelectRasnAll2 = Query.NewCommand(selectRasn + " UNION " + selectRasb + " ORDER BY RBBDT"); cmdSelectRasnAll2.Parameters.Add(Query.NewParameter("RANUM", DbType.String)); cmdSelectRasnAll2.Parameters.Add(Query.NewParameter("RAITM", DbType.Int32)); } public RasnDAC(string connectionConfig, string connectionConfigName) : this() { base._connectionConfig = connectionConfig; base._connectionConfigName = connectionConfigName; } public RasnDAC(WQuery query) : this() { base._query = query; } // 準備輸出資料架構 private DataTable NewResult() { DataTable Result = new DataTable(); Result.Columns.Add("RANUM", typeof(String)); Result.Columns.Add("RAITM", typeof(Int32)); Result.Columns.Add("RBITM", typeof(Int32)); Result.Columns.Add("RBBDT", typeof(DateTime)); Result.Columns.Add("RACNM", typeof(String)); Result.Columns.Add("RAPYN", typeof(String)); Result.Columns.Add("RASDT", typeof(DateTime)); Result.Columns.Add("RAEDT", typeof(DateTime)); Result.Columns.Add("RAJNO", typeof(String)); Result.Columns.Add("RACNO", typeof(String)); Result.Columns.Add("RABRH", typeof(String)); Result.Columns.Add("RAS01", typeof(Double)); Result.Columns.Add("RAWTZ", typeof(String)); Result.Columns.Add("APPNO", typeof(Int32)); Result.Columns.Add("BPSRM", typeof(Int32)); Result.Columns.Add("BPSRD", typeof(Int32)); Result.Columns.Add("BPP01", typeof(Int32)); Result.Columns.Add("BPP02", typeof(Int32)); Result.Columns.Add("BPP03", typeof(Int32)); Result.Columns.Add("BPP04", typeof(Int32)); Result.Columns.Add("BPP05", typeof(Int32)); Result.Columns.Add("RAEDT_Changed", typeof(Char)); Result.Columns.Add("RAJNO_Changed", typeof(Char)); Result.Columns.Add("RACNO_Changed", typeof(Char)); Result.Columns.Add("RABRH_Changed", typeof(Char)); Result.Columns.Add("RAWTZ_Changed", typeof(Char)); Result.Columns.Add("BPSRM_Changed", typeof(Char)); Result.Columns.Add("BPSRD_Changed", typeof(Char)); Result.Columns.Add("BPP01_Changed", typeof(Char)); Result.Columns.Add("BPP02_Changed", typeof(Char)); Result.Columns.Add("BPP03_Changed", typeof(Char)); Result.Columns.Add("BPP04_Changed", typeof(Char)); Result.Columns.Add("BPP05_Changed", typeof(Char)); return Result; } private void FillResult(DataTable Result, DataRow source) { DataRow newRow = Result.NewRow(); newRow["RANUM"] = source["RANUM"]; newRow["RAITM"] = source["RAITM"]; newRow["RBITM"] = source["RBITM"]; newRow["RBBDT"] = source["RBBDT"]; newRow["RACNM"] = source["RACNM"]; newRow["RAPYN"] = source["RAPYN"]; newRow["RASDT"] = source["RASDT"]; newRow["RAEDT"] = source["RAEDT"]; newRow["RAJNO"] = source["RAJNO"]; newRow["RACNO"] = source["RACNO"]; newRow["RABRH"] = source["RABRH"]; newRow["RAS01"] = source["RAS01"]; newRow["RAWTZ"] = source["RAWTZ"]; newRow["APPNO"] = source["APPNO"]; newRow["BPSRM"] = source["BPSRM"]; newRow["BPSRD"] = source["BPSRD"]; newRow["BPP01"] = source["BPP01"]; newRow["BPP02"] = source["BPP02"]; newRow["BPP03"] = source["BPP03"]; newRow["BPP04"] = source["BPP04"]; newRow["BPP05"] = source["BPP05"]; newRow["RAEDT_Changed"] = 'N'; newRow["RAJNO_Changed"] = 'N'; newRow["RACNO_Changed"] = 'N'; newRow["RABRH_Changed"] = 'N'; newRow["RAWTZ_Changed"] = 'N'; newRow["BPSRM_Changed"] = 'N'; newRow["BPSRD_Changed"] = 'N'; newRow["BPP01_Changed"] = 'N'; newRow["BPP02_Changed"] = 'N'; newRow["BPP03_Changed"] = 'N'; newRow["BPP04_Changed"] = 'N'; newRow["BPP05_Changed"] = 'N'; Result.Rows.Add(newRow); } private Char FieldDiff(object obj1, object obj2) { string s1 = obj1 != DBNull.Value ? obj1.ToString() : ""; string s2 = obj2 != DBNull.Value ? obj2.ToString() : ""; if (s1.CompareTo(s2) != 0) return 'Y'; else return 'N'; } private void FillResult(DataTable Result, DataRow current, DataRow prev) { DataRow newRow = Result.NewRow(); newRow["RANUM"] = current["RANUM"]; newRow["RAITM"] = current["RAITM"]; newRow["RBITM"] = current["RBITM"]; newRow["RBBDT"] = current["RBBDT"]; newRow["RACNM"] = current["RACNM"]; newRow["RAPYN"] = current["RAPYN"]; newRow["RASDT"] = current["RASDT"]; newRow["RAEDT"] = current["RAEDT"]; newRow["RAJNO"] = current["RAJNO"]; newRow["RACNO"] = current["RACNO"]; newRow["RABRH"] = current["RABRH"]; newRow["RAS01"] = current["RAS01"]; newRow["APPNO"] = current["APPNO"]; newRow["BPSRM"] = current["BPSRM"]; newRow["BPSRD"] = current["BPSRD"]; newRow["BPP01"] = current["BPP01"]; newRow["BPP02"] = current["BPP02"]; newRow["BPP03"] = current["BPP03"]; newRow["BPP04"] = current["BPP04"]; newRow["BPP05"] = current["BPP05"]; newRow["RAEDT_Changed"] = FieldDiff(current["RAEDT"], prev["RAEDT"]); newRow["RAJNO_Changed"] = FieldDiff(current["RAJNO"], prev["RAJNO"]); newRow["RACNO_Changed"] = FieldDiff(current["RACNO"], prev["RACNO"]); newRow["RABRH_Changed"] = FieldDiff(current["RABRH"], prev["RABRH"]); newRow["BPSRM_Changed"] = FieldDiff(current["BPSRM"], prev["BPSRM"]); newRow["BPSRD_Changed"] = FieldDiff(current["BPSRD"], prev["BPSRD"]); newRow["BPP01_Changed"] = FieldDiff(current["BPP01"], prev["BPP01"]); newRow["BPP02_Changed"] = FieldDiff(current["BPP02"], prev["BPP02"]); newRow["BPP03_Changed"] = FieldDiff(current["BPP03"], prev["BPP03"]); newRow["BPP04_Changed"] = FieldDiff(current["BPP04"], prev["BPP04"]); newRow["BPP05_Changed"] = FieldDiff(current["BPP05"], prev["BPP05"]); Result.Rows.Add(newRow); } /// /// 依條件取出資料,給 GridView 的 Select 用的 /// [DataObjectMethod(DataObjectMethodType.Select)] public DataTable Select(string RACNM, string RAPYN) { cmdSelectRasnRapyn.Parameters.Clear(); DataTable Result = NewResult(); // 依條件抓出派遣紀錄 StringBuilder sb = new StringBuilder(); sb.Append("SELECT * FROM RASN WHERE 1=1"); if (RACNM != null && RACNM.Length > 0) { sb.Append(" AND RACNM LIKE @RACNM "); cmdSelectRasnRapyn.Parameters.Add(Query.NewParameter("RACNM", RACNM + "%")); } if (RAPYN != null && RAPYN.Length > 0) { sb.Append(" AND RAPYN LIKE @RAPYN "); cmdSelectRasnRapyn.Parameters.Add(Query.NewParameter("RAPYN", RAPYN + "%")); } sb.Append("ORDER BY RACNM, RAPYN, RANUM, RAITM"); cmdSelectRasnRapyn.CommandText = sb.ToString(); DataTable rasnTmp1 = Query.Select(cmdSelectRasnRapyn); // 一筆一筆的抓出應該顯示的資料 DataTable rasnTmp2; foreach (DataRow rasnRow in rasnTmp1.Rows) { // 依照員工編號及派遣項次,抓出最後一筆異動 cmdSelectRasb.Parameters["RANUM"].Value = rasnRow["RANUM"]; cmdSelectRasb.Parameters["RAITM"].Value = rasnRow["RAITM"]; rasnTmp2 = Query.Select(cmdSelectRasb); // 填入異動資料 if (rasnTmp2.Rows.Count != 0) { FillResult(Result, rasnTmp2.Rows[0]); } } return Result; } /// /// 取出某一筆派遣異動資料,給 FormView 的 Select 用的 /// [DataObjectMethod(DataObjectMethodType.Select)] public DataTable SelectOne(string RANUM, int RAITM, int RBITM) { return SelectOne(RANUM, RAITM, RBITM, null); } /// /// 取出某一筆派遣異動資料,可加入交易中執行 /// public DataTable SelectOne(string RANUM, int RAITM, int RBITM, DbTransaction tran) { DataTable Result = NewResult(); DataTable tmp; if (RANUM != null && RANUM.Length > 0) { // 取原始資料 if (RBITM == 0) { cmdSelectRasnOne.Parameters["RANUM"].Value = RANUM; cmdSelectRasnOne.Parameters["RAITM"].Value = RAITM; if (tran == null) tmp = Query.Select(cmdSelectRasnOne); else tmp = Query.Select(cmdSelectRasnOne, tran); if (tmp.Rows.Count > 0) FillResult(Result, tmp.Rows[0]); } else { cmdSelectRasbOne.Parameters["RANUM"].Value = RANUM; cmdSelectRasbOne.Parameters["RAITM"].Value = RAITM; cmdSelectRasbOne.Parameters["RBITM"].Value = RBITM; if (tran == null) tmp = Query.Select(cmdSelectRasbOne); else tmp = Query.Select(cmdSelectRasbOne, tran); if (tmp.Rows.Count > 0) FillResult(Result, tmp.Rows[0]); } } return Result; } /// /// 取出所有派遣異動歷史資料,派遣異動查詢用 /// [DataObjectMethod(DataObjectMethodType.Select)] public DataTable SelectRASB(string RANUM, int RAITM) { DataTable Result = NewResult(); if (RANUM != null && RANUM.Length > 0) { cmdSelectRasnAll.Parameters["RANUM"].Value = RANUM; cmdSelectRasnAll.Parameters["RAITM"].Value = RAITM; DataTable tmp = Query.Select(cmdSelectRasnAll); for (int i = 0; i < tmp.Rows.Count; i++) { if (i > 0) FillResult(Result, tmp.Rows[i], tmp.Rows[i - 1]); else FillResult(Result, tmp.Rows[i]); } } return Result; } /// /// 取出某人員最近的專案 /// /// /// public DataTable SelectRecent(string BPENO) { return SelectRecentByDate(BPENO, DateTime.UtcNow.AddHours(8).Date); //var cmd = Query.NewCommand( // @"SELECT TOP 1 A.BPENO, A.BPNME // , B.RANUM, B.RAITM, B.RACNM, B.RAPYN, B.RASDT, B.RAEDT, B.RABRH, B.RAWTZ // , F.BPCNO, F.BPCME, F.BPSRM, F.BPSRD // FROM BPSNView A // LEFT OUTER JOIN RASN B ON A.BPENO=B.RANUM AND (B.RAEDT IS NULL OR (B.RASDT <= @TODAY AND B.RAEDT >= @TODAY)) // LEFT OUTER JOIN BPJB F ON B.RAPYN=F.BPPYN AND B.RAJNO=F.BPJNO AND B.RACNO=F.BPCNO // WHERE A.BPENO = @BPENO // ORDER BY B.RASDT DESC"); //Query.AddParam(cmd, "TODAY", DateTime.UtcNow.AddHours(8).Date); //Query.AddParam(cmd, "BPENO", BPENO); //return Query.Select(cmd); } /// /// 取出某人員某日期的專案 /// /// /// public DataTable SelectRecentByDate(string BPENO, DateTime DATE) { var cmd = Query.NewCommand( @"SELECT TOP 1 A.BPENO, A.BPNME , B.RANUM, B.RAITM, B.RACNM, B.RAPYN, B.RASDT, B.RAEDT, B.RABRH, B.RAWTZ , F.BPCNO, F.BPCME, F.BPSRM, F.BPSRD FROM BPSNView A LEFT OUTER JOIN RASN B ON A.BPENO=B.RANUM AND ((B.RASDT <= @DATE AND B.RAEDT IS NULL) OR (B.RASDT <= @DATE AND B.RAEDT >= @DATE)) LEFT OUTER JOIN BPJB F ON B.RAPYN=F.BPPYN AND B.RAJNO=F.BPJNO AND B.RACNO=F.BPCNO WHERE A.BPENO = @BPENO ORDER BY B.RASDT DESC"); Query.AddParam(cmd, "DATE", DATE); Query.AddParam(cmd, "BPENO", BPENO); return Query.Select(cmd); } /// /// 取出某專案年度接單的站別清單 /// [DataObjectMethod(DataObjectMethodType.Select)] public List SelectBranchForForm(string rapyn) { var cmd = Query.NewCommand( @"SELECT DISTINCT A.RAPYN ProjectID, A.RABRH BranchID, B.BSSCR BranchName, B.BSRMK BranchShortName, GroupID FROM RASN A JOIN BCLS B ON A.RABRH=B.BSCLS AND B.BSPAR='BPSNBRH' LEFT JOIN ProjectBranchGroup C ON A.RAPYN=C.ProjectID AND A.RABRH=C.BranchID WHERE A.RAPYN=@RAPYN"); Query.AddParam(cmd, "RAPYN", rapyn); return Query.Select(cmd); } /// /// 取出某專案年度接單的站別清單,依照分組順序排序 /// public List SelectBranchForReport(string rapyn) { var cmd = Query.NewCommand( @"SELECT DISTINCT A.RAPYN ProjectID, A.RABRH BranchID, B.BSSCR BranchName, B.BSRMK BranchShortName, GroupID FROM RASN A JOIN BCLS B ON A.RABRH=B.BSCLS AND B.BSPAR='BPSNBRH' JOIN ProjectBranchGroup C ON A.RAPYN=C.ProjectID AND A.RABRH=C.BranchID WHERE A.RAPYN=@RAPYN ORDER BY GroupID"); Query.AddParam(cmd, "RAPYN", rapyn); return Query.Select(cmd); } /// /// 取出某人員的專案歷史紀錄 /// /// /// public DataTable SelectHistoryByEmployee(string ranum) { var cmd = Query.NewCommand( @"SELECT B.BPENO, B.BPNME , A.RAITM, A.RAPYN, C.BPPYM , A.RASDT, A.RAEDT, A.RABRH, D.BSSCR , F.BPJNO, F.BPJME FROM RASN A LEFT OUTER JOIN BPSNView B ON B.BPENO=A.RANUM LEFT JOIN BPAA C ON A.RAPYN = C.BPPYN LEFT JOIN BCLS D ON A.RABRH = D.BSCLS AND D.BSPAR = 'BPSNBRH' LEFT JOIN BPJA F ON A.RAPYN = F.BPPYN AND A.RAJNO=F.BPJNO WHERE A.RANUM = @RANUM ORDER BY A.RASDT DESC"); Query.AddParam(cmd, "RANUM", ranum); return Query.Select(cmd); } public void GetTimeZone(string bpeno, DateTime date, out string timezoneID, out string timezoneName) { var rasnTable = SelectRecentByDate(bpeno, date); timezoneName = string.Empty; timezoneID = string.Empty; if (rasnTable.Rows.Count > 0) { timezoneName = WDAC.GetStringValue(rasnTable.Rows[0]["RAWTZ"]); DbCommand cmd = Query.NewCommand(); cmd.CommandText = "SELECT WINDOWS_ID FROM BTMZ WHERE NAME=@NAME"; cmd.Parameters.Clear(); Query.AddParam(cmd, "NAME", rasnTable.Rows[0]["RAWTZ"]); timezoneID = WDAC.GetStringValue(Query.ExecuteScalar(cmd)).Trim(); // 如果表格內沒取到,這裡做個保險 if (string.IsNullOrEmpty(timezoneID)) { switch (timezoneName) { case "台北": case "": case null: break; case "美西": timezoneID = "Pacific Standard Time"; break; case "美東": timezoneID = "Eastern Standard Time"; break; case "東京": timezoneID = "Tokyo Standard Time"; break; case "倫敦": timezoneID = "GMT Standard Time"; break; } } } } /// /// 取出日期區間內派遣資料以及派遣異動資料 /// /* public DataTable SelectRASNDateRange(string RANUM, int RAITM, DateTime startDay, DateTime endDay, DbTransaction tran) { // 1. 取出區間內派遣資料,依照開始日期排序 DbCommand cmd = Query.NewCommand( @"SELECT RANUM, RAITM, RASDT FROM RASN WHERE RANUM=@RANUM AND RAITM=@RAITM AND ((RASDT <= @YYMM1 AND RAEDT >= @YYMM2) OR (RASDT <= @YYMM1 AND RAEDT IS NULL) OR (RASDT <= @YYMM1 AND RAEDT >= @YYMM1 AND RAEDT <= @YYMM2) OR (RASDT >= @YYMM1 AND RASDT <= @YYMM2 AND RAEDT >= @YYMM2) OR (RASDT >= @YYMM1 AND RASDT <= @YYMM2 AND RAEDT IS NULL) OR (RASDT >= @YYMM1 AND RASDT <= @YYMM2 AND RAEDT >= @YYMM1 AND RAEDT <= @YYMM2)) ORDER BY RASDT"); cmd.Parameters.Add(Query.NewParameter("RANUM", RANUM)); cmd.Parameters.Add(Query.NewParameter("RAITM", RAITM)); cmd.Parameters.Add(Query.NewParameter("YYMM1", startDay)); cmd.Parameters.Add(Query.NewParameter("YYMM2", endDay)); cmd.Connection = tran.Connection; cmd.Transaction = tran; DbDataAdapter da = Query.NewDataAdapter(cmd); DataTable rasnTmp1 = new DataTable(); da.Fill(rasnTmp1); if (rasnTmp1.Rows.Count == 0) return rasnTmp1; DataTable rasn; foreach (DataRow rasnRow in rasnTmp1.Rows) { string ranum = rasnRow["RANUM"].ToString(); int raitm = Convert.ToInt32(rasnRow["RAITM"]); // 取得主檔與異動紀錄 rasn = SelectRASB(ranum, raitm); // 取得異動紀錄 //rpir.Merge(rpirDao.SelectRPIBMonth(ranum, startDay, endDay, tran), true, MissingSchemaAction.Add); } // 整理每一筆紀錄,將退保日期填入 for (int i = 0; i < rasn.Rows.Count; i++) { int rpitm = Convert.ToInt32(rasn.Rows[i]["RPITM"]); rasn.Rows[i].BeginEdit(); // 若項次不是 0,把加保日填入生效日 //的次月一號 if (rpitm != 0) { DateTime rpbdt = Convert.ToDateTime(rasn.Rows[i]["RPBDT"]); //rpir.Rows[i]["RPSDT"] = WGuard1.GetMonthBegin(rpbdt, 1); rasn.Rows[i]["RPSDT"] = rpbdt; } // 沒有退保日 if (rasn.Rows[i]["RPEDT"] == DBNull.Value) { // 若不是最後一筆,且下一筆項次不是 0 if (i < rasn.Rows.Count - 1 && Convert.ToInt32(rasn.Rows[i + 1]["RPITM"]) != 0) { // 下一筆沒有退保日,把下一筆的生效日期前一天 // 的當月月底,放入退保日期 if (rasn.Rows[i + 1]["RPEDT"] == DBNull.Value) { DateTime rpbdt = Convert.ToDateTime(rasn.Rows[i + 1]["RPBDT"]); //rpir.Rows[i]["RPEDT"] = WGuard1.GetMonthEnd(rpbdt, 0); rasn.Rows[i]["RPEDT"] = rpbdt.AddDays(-1); } // 下一筆有退保日,把下一筆的退保日,放入這一筆的退保日期 else { rasn.Rows[i]["RPEDT"] = rasn.Rows[i + 1]["RPEDT"]; } } // 最後一筆 else if (i == rasn.Rows.Count - 1) { DateTime rpsdt = Convert.ToDateTime(rasn.Rows[i]["RPSDT"]); // 加保日大於月底日,退保日放入加保日的當月月底 if (rpsdt > endDay) rasn.Rows[i]["RPEDT"] = WGuard1.GetMonthEnd(rpsdt, 0); // 否則放入月底日 else rasn.Rows[i]["RPEDT"] = endDay; } } rasn.Rows[i].EndEdit(); } // 再一次整理,剔除: // 1. 加保日與退保日均在日期區間外的紀錄 // 2. 退保日小於加保日的紀錄 // 3. 加保日等於退保日且是最後一筆,但項次不是 0 的紀錄 int count = rasn.Rows.Count - 1; for (int i = rasn.Rows.Count - 1; i >= 0; i--) { DateTime rpsdt = Convert.ToDateTime(rasn.Rows[i]["RPSDT"]); DateTime rpedt = Convert.ToDateTime(rasn.Rows[i]["RPEDT"]); int rpitm = Convert.ToInt32(rasn.Rows[i]["RPITM"]); if ((rpsdt < startDay && rpedt < startDay) || (rpsdt > endDay && rpedt > endDay) || (rpsdt > rpedt) || (rpsdt == rpedt && i == count && rpitm != 0)) rasn.Rows.RemoveAt(i); } return rasn; } */ } public class RASNBRHItem { public string ProjectID { get; set; } public string BranchID { get; set; } public string BranchName { get; set; } public string BranchShortName { get; set; } public string GroupID { get; set; } }