LINQ三表联合查询之后数据怎么合并?
一个用户表。一个部门表。一个考勤表。
代码如下[code=C#][/code]
  protected void Page_Load(object sender, EventArgs e)
     {
         if (!IsPostBack)
         {
             //查询部门信息
             this.DropDownList1.DataTextField = "DepartName";
             this.DropDownList1.DataValueField = "DepartId";
             this.DropDownList1.DataSource = DAL.DepartInfo.Depart();
             DropDownList1.DataBind();
             DateTime a = DateTime.Now.AddDays(7);
             DAL.DataClassesDataContext db = new DAL.DataClassesDataContext();
             var q = from User in db.UserInfo
                     join De in db.DepartInfo on User.DepartId equals De.DepartId
                     join Ma in db.ManualSign on User.UserId equals Ma.UserId
                     select new { 姓名 = User.UserName, 迟到次数 = chidao(User.UserName), 早退次数 = zaotui(User.UserName), 旷工次数=kuanggong(User.UserName) ,所属部门=De.DepartName };
             GridView1.DataSource = q.ToList();
             GridView1.DataBind();
         }
     }
//查询指定用户的迟到次数
     public int chidao(string a)
     {
         DAL.DataClassesDataContext db = new DAL.DataClassesDataContext();
         var z = from x in db.WorkTime
                 select x;
         DAL.DataClassesDataContext dd = new DAL.DataClassesDataContext();
         var q = from w in dd.ManualSign
                  where w.SignTime > DateTime.Parse(z.First().OnDutyTime) && w.SignTag == 1&&w.UserInfo.UserName==a
                  select w;
         return q.Count();
     }
//查询指定用户的早退次数
     public int zaotui(string a)
     {
         DAL.DataClassesDataContext db = new DAL.DataClassesDataContext();
         var z = from x in db.WorkTime
                 select x;
         DAL.DataClassesDataContext dd = new DAL.DataClassesDataContext();
         var q = from w in dd.ManualSign
                 where w.SignTime < DateTime.Parse(z.First().OffDutyTime) && w.SignTag == 0&&w.UserInfo.UserName==a
                 select w;
         return q.Count();
     }
//查询指定用户的旷工次数
     public int kuanggong(string aa)
     {
         DateTime qishi = DateTime.Parse(TextBox1.Text.Trim());
         DateTime jieshu = DateTime.Parse(TextBox2.Text.Trim());
         int a = System.Data.Linq.SqlClient.SqlMethods.DateDiffDay(qishi, jieshu);
         int p = 0;
         int o = 0;
         DAL.DataClassesDataContext db = new DAL.DataClassesDataContext();
         var z = from x in db.WorkTime
                 select x;
         DAL.DataClassesDataContext dd = new DAL.DataClassesDataContext();
         for (int b = 0; b <= a; b++)
         {
             var q = from w in dd.ManualSign
                     where w.SignTime == qishi.AddDays(b) && w.SignTag == 1&&w.UserInfo.UserName==aa
                     select w;
             if (q.Count() != 0)
             {
                 p = p + 1;
             }
         }
         o = a - p;
         return o;
     }
我这样能查出数据。但是旷工次数是我输入的时间天数总和。
在旷工方法里面数据没有查出上班天数。
这是查询出来的东西
希望有人能给解答一下。。。。
------解决方案--------------------试试条件 把 用户名都放前面, 把循环去掉... 效率会不会高一些.
另外 这段  
for (int b = 0; b <= a; b++)
 {
 var q = from w in dd.ManualSign
 where w.SignTime == qishi.AddDays(b) && w.SignTag == 1&&w.UserInfo.UserName==aa