c# - 显示每个 id 的任务数
问题描述
我有页面显示任务列表(使用 Jquery DataTable),我想显示员工姓名和三个任务的数量。例如:
史密斯 (2) | 约翰 (1) | 托马斯 (1)
表:
分配名称:
任务(AssignId 作为 ForeignKey):
这是我所做的:
在这里我得到任务列表并选择一些属性:
var Taskslist = db.Tasks.Select(g => new ServicetasksVM.ItemGroup
{
OpgaveServicesId = g.Id,
Opgaver = g.Opgaver,
Opgaveid = g.Id,
Opretteaf = g.Opretteaf,
OpretteDato = g.OpretteDato,
}).AsEnumerable();
她遍历结果以计算每个 id:
foreach (var item in result)
{
var AssignCount = db.AssignName.Where(c => c.Id == item.Assingid)
.GroupBy(x => x.Name)
.Select(b => new ServicetasksVM.ItemGroup { Assingid = b.Count(), EmployeeNames= b.Key });
}
将所有代码放在一起(为简单起见,我删除了不需要的代码):
public JsonResult ListofTasks() {
var Taskslist = db.Tasks.Select(g => new ServicetasksVM.ItemGroup
{
OpgaveServicesId = g.Id,
Opgaver = g.Opgaver,
Opgaveid = g.Id,
Opretteaf = g.Opretteaf,
OpretteDato = g.OpretteDato,
}).AsEnumerable();
var result = Taskslist.Skip(start).Take(length).ToList();
foreach (var item in result)
{
var AssignCount = db.AssignName.Where(c => c.Id == item.Assingid)
.GroupBy(x => x.Name)
.Select(b => new ServicetasksVM.ItemGroup { Assingid = b.Count(), EmployeeNames= b.Key });
}
JsonResult json = Json(new { data = result, draw = Request["draw"], recordsTotal = totalrows, recordsFiltered = totalrowsefterfiltering }, JsonRequestBehavior.AllowGet);
json.MaxJsonLength = int.MaxValue;
return json;
视图模型:
public List<ItemGroup> ItemGroups { get; set; }
public class ItemGroup
{
public ItemGroup()
{
}
public int OpgaveServicesId { get; set; }
public string Opgaver { get; set; }
public string Opretteaf { get; set; }
public DateTime? OpretteDato { get; set; }
public int Opgaveid { get; set; }
public int OpgaveSmartid { get; set; }
public string Opgavestatus { get; set; }
public int? Assingid { get; set; }
public string EmployeeNames { get; set; }
}
最后,当我检查结果时,Assingid和EmployeeNames都是null
. 谁能帮帮我吗 :)
解决方案
变量的范围AssignCount
仅限于 foreach 循环,这就是你得到的原因,Assingid
并且EmployeeNames
在程序结束时为空。
要解决此问题,请将每个计数存储AssignCount
到列表中,以便您可以在foreach
循环外访问所有计数
...
//Define list of List of ItemGroup, as AssignCount is of type List<ItemGroup>
List<List<ServicetasksVM.ItemGroup>> itemGroups = new List<List<ServicetasksVM.ItemGroup>>();
foreach (var item in result)
{
var AssignCount = db.AssignName.Where(c => c.Id == item.Assingid)
.GroupBy(x => x.Name)
.Select(b => new ServicetasksVM.ItemGroup { Assingid = b.Count(), EmployeeNames= b.Key })
.ToList(); //Convert To List
itemGroups.Add(AssignCount); //Add each `AssignCount` to itemGroups
}
//Now list of AssignCount(s) is(are) accessible outside foreach loop
...
推荐阅读
- angularjs - 如何处理angularJS动态表单中的多个复选框数据
- regex - 如何从两个不同的文件夹(基于子域)加载内容并保留旧 URL?
- reactjs - How to get my input validation and disabling/enabling my submit button depending on the state of the form in ReactJS
- laravel - laravel 5.5 的 whereDate 问题
- python - How can I add a new column to dataframe that uses a function to check if values from two columns fit specific criteria?
- javascript - Is there Lambda support in QML files?
- android-studio - How to implement a overlapping TextView in a ImageView, which combinely works as a Button?
- c# - Is there a way to display items from an array on separate lines of a TextBox?
- reactjs - antd dropdown : selected value displaying outside the select
- jquery - 将隐藏数据添加到 HTML 表格