2017-01-10 3 views
1

私は以下の方法でリストを返します。これは非常にうまくいく。 私が達成しようとしていることの詳細は以下で見つけることができます。重複フィールドの合計を求め、linqを使って1行だけを返す

 public List<Employeehourstask> GetAllTaskForEmployee(long uniqueId, string empId, DateTime strDate) 
       { 
        var decuniqueid = Convert.ToDecimal(uniqueId); 
        using (var objEmpTask = new FtCollectionEntities()) 
        { 
         List<Employeehourstask> objTaskList = (from bj in objEmpTask.DATA_TASK_EMP.Where(
                    s => s.DEPT_UNIQUE_ID == decuniqueid 
                    && s.DAY_DATE.Value.Year == strDate.Year 
                    && s.DAY_DATE.Value.Month == strDate.Month 
                    && s.DAY_DATE.Value.Day == strDate.Day 
                    && s.EMPLID == empId) 

            select new Employeehourstask() 
            { 
             Id = bj.UNIQUE_ID, 
             Hours = bj.PRODUCTION_HOURS_ENTERED, 
             MyCount = bj.PIECE_COUNT, 
             Task = bj.TASK_CODE 
            }).ToList();                                                       
         return objTaskList; 
        } 
       } 

enter image description here

答えて

0

グループTask、その後SumHours/MyCountによります。

List<Employeehourstask> objTaskList = (
    from bj in objEmpTask.DATA_TASK_EMP.Where(s => 
     s.DEPT_UNIQUE_ID == decuniqueid && 
     s.DAY_DATE.Value.Year == strDate.Year && 
     s.DAY_DATE.Value.Month == strDate.Month && 
     s.DAY_DATE.Value.Day == strDate.Day && 
     s.EMPLID == empId) 
    group bj by bj.TASK_CODE into bjg 
    select new Employeehourstask() 
    { 
     //Id = bjg.Select(bg => bg.UNIQUE_ID).FirstOrDefault(), 
     Hours = bjg.Sum(bj => bj.PRODUCTION_HOURS_ENTERED), 
     MyCount = bjg.Sum(bj => bj.PIECE_COUNT), 
     Task = bj.Key 
    } 
).ToList(); 

[タスク

+0

に基づいて感謝をあなたの結果を集約しているので、あなたはおそらく、Idプロパティをドロップすることができます。私はイドが必要です。私はそれを使ってwebgridのレコードを更新しています。 – user2320476

関連する問題