c#groupBy失败,找不到键异常

时间:2019-05-09 14:25:54

标签: c# .net mongodb

我使用C#中的mongoDb驱动程序检索BsonDocuments。

在此之后,我有了一种分组方法,该方法用于使用给定的Key重新组合文档。 这是从mongo返回的对象的示例:

{{ "_id" : ObjectId("57762d37de7d9c1cbc53bc10"), "DraftNumber" : "227232AA", "EndDate" : ISODate("2016-09-29T08:45:14.986Z"), "ProjectNumber" : "17E618BB" }}

这是我用来重新分组的方法的开始:

internal List<Project> RegroupProject(IEnumerable<BsonDocument> projects)
{
    var regroupProjectList = new List<Project>();

    var groupedProject = projects.GroupBy(project => project["ProjectNumber"]).ToList();
    [...]
}

我在groupBy表达式中得到了以下异常:

  

找不到元素“ ProjectNumber”。

您对此有何看法? 是因为我的18k元素之一没有ProjectNumber字段的值吗?

1 个答案:

答案 0 :(得分:0)

您正确地猜测18k项中的一项或多项没有ProjectNumber属性。我可以看到几个选择。

  1. 过滤掉不具有该属性的项目:

    var groupedProject = projects
        .Where(p => p.Contains("ProjectNumber"))
        .GroupBy(project => project["ProjectNumber"])
        .ToList();
    
  2. 为缺少该值的项目指定默认值:

    var groupedProject = projects
        .GroupBy(project => project["ProjectNumber", "<DefaultValue>"])
        .ToList();