for (int i = 0; i < dr.Length; i++)
  {
  string UserAccount = dr[i]["员工工号"].ToString();
  string StartDate = dr[i]["开始日期"].ToString();
  string StartTime = dr[i]["开始时间"].ToString();
  string EndDate = dr[i]["结束日期"].ToString();
  string EndTime = dr[i]["结束时间"].ToString();
  decimal DayQty =  decimal.Parse(GetLeaveDays(StartDate, StartTime, EndDate, EndTime, LeaveTypeModel.AnnualLeave));
  }根据Useraccount记录下DayQty值(相同UserAccount相加),但是每次的Useraccount都不一致 有什么好的解决方法(可以用缓存吗). 

解决方案 »

  1.   

    你这结贴率实在够呛,不过还是给你个回应吧
    没测试过,也不知道有没有理解错你的意思
    Dictionary<string, decimal > Users = new Dictionary<string, decimal >();for (int i = 0; i < dr.Length; i++)
      {
      string UserAccount = dr[i]["员工工号"].ToString();
      string StartDate = dr[i]["开始日期"].ToString();
      string StartTime = dr[i]["开始时间"].ToString();
      string EndDate = dr[i]["结束日期"].ToString();
      string EndTime = dr[i]["结束时间"].ToString();
      decimal DayQty = decimal.Parse(GetLeaveDays(StartDate, StartTime, EndDate, EndTime, LeaveTypeModel.AnnualLeave));
        if (Users.ContainsKey(UserAccount))
                {
                    
                    Users[UserAccount] += DayQty;
                }
                else
                {
                    Users.Add(UserAccount, DayQty);
                }
      }
      

  2.   

     DataRow[] dr=new DataRow();
            Dictionary<string,string> userDate = new Dictionary<string,string>();
            Dictionary<string,decimal> user = new Dictionary<string,decimal>();
            decimal DayQty = 0;
            for(int i = 0; i < dr.Length; i++)
            {
                userDate.Add(dr[i]["员工工号"].ToString(),"");
            }
            foreach(string userId in userDate.Keys)
            {
                DayQty=0;
                for (int i = 0; i < dr.Length; i++)
                {
                     string UserAccount = dr[i]["员工工号"].ToString();
                     string StartDate = dr[i]["开始日期"].ToString();
                     string StartTime = dr[i]["开始时间"].ToString();
                     string EndDate   = dr[i]["结束日期"].ToString();
                     string EndTime   = dr[i]["结束时间"].ToString();
                     
                     if (string.IsNullOrEmpty(StartDate) || string.IsNullOrEmpty(StartTime) || string.IsNullOrEmpty(EndDate) || string.IsNullOrEmpty(EndTime))
                     {
                         //StartDate =  EndDate = "0";
                         //StartTime =EndTime   = "";
                     }
                     else
                     {
                             if(userId == dr[i]["员工工号"].ToString())
                             {
                                DayQty += decimal.Parse(GetLeaveDays(StartDate, StartTime, EndDate, EndTime, LeaveTypeModel.AnnualLeave)); //decimal.Parse(dr[i]["天数"].ToString());
                             }
                      }
                  }
                if(!user.ContainsKey(userId))
                {
                    user.Add(userId,DayQty);
                }
             }
                foreach(KeyValuePair<string,decimal> u in user)
                {
                    if( GetAnnualSet(u.Key,u.Value)){}
                   
                }
             }已解决   谢谢