我想在C#中创建一个列表,看起来像:
[
{
"Total": "11",
"DocumentTypeName": "MMT",
"ProceesedDocumentCount": "5",
"UnProceesedDocumentCount": "6"
},
{
"Total": "11",
"DocumentTypeName": "CIMIC",
"ProceesedDocumentCount": "3",
"UnProceesedDocumentCount": "8"
},
{
"Total": "13,
"DocumentTypeName": "CROWN",
"ProceesedDocumentCount": "7",
"UnProceesedDocumentCount": "6"
}
]
到目前为止,我已经尝试过这个代码:
public async Task<ListResultDto<DashboardCountDto>> CountAllTrainDocuments()
{
//var retList = new List<ListOfDocumentTypes>();
var allTrainFiles = await _trainDocumentRepository.GetAllListAsync();
var CountTrainFiles = allTrainFiles.GroupBy(t=> t.DocumentTypeName).
Select(e => new DashboardCountDto{
Total = e.Count(),
DocumentTypeName = e.Key,
ProceesedDocumentCount = e.key.Count(g => g.Processed = true),
UnProceesedDocumentCount = e.key.Count(g => g.Processed = false),
}).ToList();
// return retList;
CountTrainFiles.ForEach(
row => Console.WriteLine($"DocType: {row.DocumentTypeName}, ProcessedDocument: {row.ProceesedDocumentCount}, UnProcessedDocument: {row.UnProceesedDocumentCount}"));
return new ListResultDto<DashboardCountDto>(CountTrainFiles);
}
我得到一个错误:I分组<字符串,TrainDocument>'不包含"key"的定义,并且没有可访问的扩展方法"key"接受类型为"IGrouping<字符串,TrainDocument>'可以找到(您是否缺少使用指令或程序集引用?(
我的DTO看起来像:
public class DashboardCountDto : EntityDto<long>
{
public int Total { get; set; }
public string DocumentTypeName { get; set; }
public int ProceesedDocumentCount { get; set; }
public int UnProceesedDocumentCount { get; set; }
}
尝试在Count
之前删除key
,就像对DashboardCountDto.Total
所做的那样(假设TrainDocument
具有Processed
属性(:
.Select(e => new DashboardCountDto
{
Total = e.Count(),
DocumentTypeName = e.Key,
ProceesedDocumentCount = e.Count(g => g.Processed = true),
UnProceesedDocumentCount = e.Count(g => g.Processed = false)
}