【发布时间】:2018-06-19 19:26:35
【问题描述】:
有一类persons,认识好几位作者,有一个偏爱的作者:
public class Author
{
public string name;
public string firstname;
}
public class Person
{
public string favoredAuthor;
public Author[] knownAuthors;
}
json 表示如下所示:
{
"_id" : ObjectId("5b2955cf79cd67d3d09ddbe8"),
"knownAuthors" : [
{
"name" : "Müllmann",
"firstname" : "Dieter"
},
{
"name" : "Marx",
"firstname" : "Karl"
},
{
"name" : "Hildebrandt",
"firstname" : "Saftarsch"
}
],
"favoredAuthor" : "Marx"
}
我想使用以下 linq 表达式查询该人偏爱的 -Author-:
// gives no result:
var favoredAuthor = persons.AsQueryable()
.Select(x => x.knownAuthors.Where(a => a.name == x.favoredAuthor))
.FirstOrDefault();
如果我处理人员列表,则同样有效:
// working (result is Author 'Karl Marx'):
var persons = new List<Person>() { new Person() }.AsQueryable();
var person = persons.Select(x => x.knownAuthors.Where(a => a.name == x.favoredAuthor).FirstOrDefault())
.FirstOrDefault();
这是官方 MongoDB 驱动程序中的错误吗?还是我做错了? 我用 视觉工作室 2017 MongoDb 驱动 2.7.0 和 2.6.1
有什么想法吗,男孩女孩?
【问题讨论】:
-
问题不是子查询,而是同一个文档的两个字段的比较(“自连接”)。就我而言,解决方案是将属性 isFavoredAuthor 添加到 Author 类。
标签: c# mongodb linq mongodb-query