选择ID字段的AsQueryable linq语句

时间:2016-05-16 17:41:20

标签: c# mongodb linq mongodb-.net-driver asqueryable

给出一个简单的模型:

public class Model{
    private string _id;
    [BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
    [BsonRepresentation(BsonType.ObjectId)]
    public string Id {
        get { return _id; }
        set { _id = value; }
    }
    //Additional fields
}

假设我想根据查询从该类中仅选择几个字段:

_collection.AsQueryable<Model>().Where(m => m.Id == id)
    .Select( x => 
        new Model(){
            Id = x.Id,
            SomeField = x.SomeField
        });

将发生以下错误:元素&#39; Id&#39;与Model类的任何字段或属性都不匹配。

如果没有select子句,则设置Id并按预期返回。此外,如果从select中删除字段Id,它将按预期返回所有内容,但Id将为null。

我们希望使用select来限制返回的数据量。我们可以使用动态对象(或创建一个新对象来传递),但似乎是多余的。

对此问题的任何建议?

1 个答案:

答案 0 :(得分:0)

门票在这里:https://jira.mongodb.org/browse/CSHARP-1555

我唯一的问题是你为什么要创建一个新模型? x已经是正确的类型。