2016-05-16 10 views
0

Учитывая простую модель:AsQueryable оператор LINQ с выбора поля ID

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 
     }); 

Следующая ошибка произойдет: Элемент 'Id' не соответствует ни одному полю или свойству класса Model.

Если предложение select отсутствует, идентификатор устанавливается и возвращается, как ожидалось. Кроме того, если вы удалите идентификатор поля из select, он вернет все, как ожидалось, за исключением того, что Id будет null.

Мы хотим использовать выбор, чтобы ограничить количество возвращаемых данных. Мы могли бы использовать динамический объект (или создать новый объект для передачи), но, похоже, избыточным.

Любые предложения по этому вопросу?

ответ

0

Билет находится здесь: https://jira.mongodb.org/browse/CSHARP-1555.

Вопрос только в том, почему вы создаете новую модель? x уже имеет правильный тип.

+0

Это был всего лишь пример проблемы, которую я нашел –