C# 4.0 使用linq查找重复字段的总数并仅返回一行
我有下面的方法返回一个列表。这很有效。 我正在努力实现的细节可以在下面找到C# 4.0 使用linq查找重复字段的总数并仅返回一行,c#-4.0,linq-to-sql,linq-to-entities,C# 4.0,Linq To Sql,Linq To Entities,我有下面的方法返回一个列表。这很有效。 我正在努力实现的细节可以在下面找到 public List<Employeehourstask> GetAllTaskForEmployee(long uniqueId, string empId, DateTime strDate) { var decuniqueid = Convert.ToDecimal(uniqueId);
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;
}
}
public List GetAllTaskForEmployee(长uniqueId、字符串empId、日期时间strDate)
{
var deuniqueid=Convert.ToDecimal(uniqueId);
使用(var objEmpTask=new FtCollectionEntities())
{
列出objTaskList=(来自objEmpTask.DATA\u TASK\u EMP.Where中的bj(
s=>s.DEPT\u UNIQUE\u ID==deuniqueid
&&s.DAY_DATE.Value.Year==标准日期年份
&&s.DAY_DATE.Value.Month==标准日期月份
&&s.DAY_DATE.Value.DAY==标准日期.DAY
&&s.EMPLID==empId)
选择新员工工时任务()
{
Id=bj.UNIQUE\u Id,
小时数=bj.生产小时数,
MyCount=bj.件数,
Task=bj.Task\u代码
}).ToList();
返回对象列表;
}
}
按
任务
分组,然后对小时数
/我的计数
进行求和
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();
列表对象列表=(
从objEmpTask.DATA\U TASK\U EMP.Where(s=>
s、 部门唯一ID==deuniqueID&&
s、 DAY_DATE.Value.Year==标准日期年份&&
s、 DAY_DATE.Value.Month==标准日期月份&&
s、 DAY_DATE.Value.DAY==标准日期日&&
s、 EMPLID==empId)
按bj.TASK_代码将bj分组到bjg中
选择新员工工时任务()
{
//Id=bjg.Select(bg=>bg.UNIQUE\u Id).FirstOrDefault(),
工时=bjg.总和(bj=>输入的bj.生产工时),
MyCount=bjg.总和(bj=>bj.计件计数),
Task=bj.Key
}
).ToList();
您可能可以删除
Id
属性,因为您正在根据任务对结果进行聚合按Task
分组,然后对Hours
/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();
列表对象列表=(
从objEmpTask.DATA\U TASK\U EMP.Where(s=>
s、 部门唯一ID==deuniqueID&&
s、 DAY_DATE.Value.Year==标准日期年份&&
s、 DAY_DATE.Value.Month==标准日期月份&&
s、 DAY_DATE.Value.DAY==标准日期日&&
s、 EMPLID==empId)
按bj.TASK_代码将bj分组到bjg中
选择新员工工时任务()
{
//Id=bjg.Select(bg=>bg.UNIQUE\u Id).FirstOrDefault(),
工时=bjg.总和(bj=>输入的bj.生产工时),
MyCount=bjg.总和(bj=>bj.计件计数),
Task=bj.Key
}
).ToList();
您可能可以删除
Id
属性,因为您是根据任务聚合结果的谢谢。我需要Id。我正在使用它更新webgrid上的记录。谢谢。我需要Id。我正在使用它更新webgrid上的记录。