选择 ID 字段的 AsQueryable linq 语句
Posted
技术标签:
【中文标题】选择 ID 字段的 AsQueryable linq 语句【英文标题】:AsQueryable linq statement with selecting the ID field 【发布时间】:2016-05-16 17:41:20 【问题描述】:给定一个简单的模型:
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 子句,则设置 Id 并按预期返回。此外,如果您从选择中删除字段 Id,它将按预期返回所有内容,除了 Id 将为空。
我们想使用 select 来限制返回的数据量。我们可以使用动态对象(或创建一个新对象来传递),但似乎是多余的。
对这个问题有什么建议吗?
【问题讨论】:
【参考方案1】:票在这里:https://jira.mongodb.org/browse/CSHARP-1555。
我唯一的问题是你为什么要创建一个新模型? x 已经是正确的类型。
【讨论】:
这只是我发现的问题的一个例子以上是关于选择 ID 字段的 AsQueryable linq 语句的主要内容,如果未能解决你的问题,请参考以下文章
linq中AsEnumerable和AsQueryable的区别
linq中AsEnumerable和AsQueryable的区别