使用linq查询创建列表时出现Getting IGrouping错误



我想在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)       
}

最新更新