当前位置: 首页 > 知识库问答 >
问题:

元素“group”与Gillie类的任何字段或属性都不匹配。就业中心。领域KeyValueEntity

汪博达
2023-03-14

有人能帮我吗?我花了很多时间来解决这个问题,什么都没有

这是我的实体和帮助对象:

public class Course
{
    [BsonId]
    [BsonRepresentation(BsonType.ObjectId)]
    public ObjectId Id { get; set; }

    [BsonRepresentation(BsonType.ObjectId)]
    [BsonElement("_etag")]
    public ObjectId Etag { get; set; }

    [BsonElement("group")]
    public KeyValueEntity<string> Group { get; set; }

    [BsonElement("values")]
    public GroupValuesCourse[] Values { get; set; }
}

public class KeyValueEntity<T>
{
    [BsonElement("key")]
    [JsonProperty("key")]
    public string Key { get; set; }

    [BsonElement("value")]
    [JsonProperty("value")]
    public T Value { get; set; }

    public override string ToString()
    {
        return Value?.ToString();
    }
}
public class GroupValuesCourse
{
    [BsonElement("group")]
    public KeyValueEntity<string> GroupKeys { get; set; }

    [BsonElement("values")]
    public KeyValueEntity<string>[] ValueKeys { get; set; }
}

和我的存储库

    public async Task<IEnumerable<KeyValueEntity<string>>> GetAllForGroupAsync(string groupName, string subGroupName)
    {
        return await mongoDbContext.MongoDataBase.GetCollection<Course>("courses").AsQueryable()
            .Where(courseGroup => courseGroup.Group.Value == groupName)
                .SelectMany(courseGroups => courseGroups.Values)
                .Where(subgroup => subgroup.GroupKeys.Value == subGroupName)
                    .SelectMany(groups => groups.ValueKeys)
                    .OrderBy(value => value.Value)
                    .ToListAsync();
    }

执行后,告诉我:系统。FormatException:元素“group”与Gillie类的任何字段或属性都不匹配。就业中心。领域KeyValueEntity`1[[System.String,System.Private.CoreLib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e]]。但我确信映射是正确的。有人能帮我找出错误吗?

共有2个答案

艾令秋
2023-03-14

我已经用这个小技巧自己实现了。我使用了Select and First而不是SelectMany,现在可以使用了。据我所知,mongodbDriver不支持这样的硬质量。所以这是我的结果

    public async Task<IEnumerable<KeyValueEntity<string>>> GetAllForGroupAsync(string groupName, string subGroupName)
    {
        return async coursesCollection.AsQueryable()
             .Where(courseGroup => courseGroup.Group.Value == groupName)
                .SelectMany(courseGroups => courseGroups.Values)
                    .Where(subGroup => subGroup.GroupKeys != null)
                    .Where(subgroup => subgroup.GroupKeys.Value == subGroupName)
                        .Select(groups => groups.ValueKeys)
                        .FirstAsync();
    }
祝高超
2023-03-14

这似乎是理所当然的。对于某些课程,组为空。也许会以某种方式过滤掉。我添加了一个where子句作为示例来消除它们。

public async Task<IEnumerable<KeyValueEntity<string>>> GetAllForGroupAsync(string groupName, string subGroupName)
{
    return await mongoDbContext.MongoDataBase.GetCollection<Course>("courses").AsQueryable()
        .Where(courseGroup => courseGroup.Group != null)
        .Where(courseGroup => courseGroup.Group.Value == groupName)
            .SelectMany(courseGroups => courseGroups.Values)
            .Where(subgroup => subgroup.GroupKeys.Value == subGroupName)
                .SelectMany(groups => groups.ValueKeys)
                .OrderBy(value => value.Value)
                .ToListAsync();
}
 类似资料:
  • 问题:这是我的XMLfile.on第6行我得到错误“元素类型的内容”属性“必须匹配”(描述?,元*,(bean|ref|idref|value|null|list|set|map|props)?)".".

  • 我是8Java的新手。我有一个A类对象的列表,其中A的结构如下: 现在我有了一个类A的元素L的列表,在这个列表中,我想用inactive=false更新一个名为name="test "的元素。 我可以通过编写for循环并创建一个新列表来非常轻松地做到这一点。 但是我如何使用Java8流API呢?

  • 我正在用WebStorm做一个项目。昨天我安装了nvm&nodist来管理多个版本的Node。今天开始我的项目(在yarn start和npm start上)时,我遇到了这个错误。 抱歉,Nodist有问题。无法解析节点版本规范%s:%s 11.13.0找不到任何匹配的版本 我已经尝试修复重新安装的节点11版本,但错误仍然在这里。 有人能帮帮我吗?

  • 问题内容: 我陷入了反应路由器路由。我收到错误消息: 这是我的 app.js : 我的 App.js 如下所示: 我的 Home.js 如下所示: 这是我的项目的层次结构: 如您所 料* ,我使用 browserify 构建 app.js 并创建 bundle.js, 并且在 index.html的 脚本标记中使用了 bundle.js * 这是我在项目中使用的所有版本。 因此,当我尝试转到“ h

  • > POJO摘要 对方法预授权筛选器。 在传递完全填充的对象(存在正确的用户和组组合)时,安全筛选器引发以下异常: 原因是: 请提供地址相同的指针。

  • 如何获取属性中具有特定文本的跨度?我正在尝试提取文本“星星”后面的数字。那么我怎么能选择一个包含文本“rating_sprite星”的 span 标签,并且我希望从属性中提取值“star5”,以便我可以从文本中获取 5。 目前我没有收到任何元素! HTML代码段如下所示