C# 如何使用LINQ'从MongoDB中的内部数组获取数据;s AsQueryable()?

C# 如何使用LINQ'从MongoDB中的内部数组获取数据;s AsQueryable()?,c#,mongodb,linq,asqueryable,C#,Mongodb,Linq,Asqueryable,我无法从MongoDB中的内部数组获取数据。我得到一个错误: BsonSerializationException: No matching creator found. 下面是我在MongoDB、query和environment中的数据示例 { "Id" : 1, "compName" : "Samsung Electronics Co.", "symbol" :

我无法从MongoDB中的内部数组获取数据。我得到一个错误:

BsonSerializationException: No matching creator found.
下面是我在MongoDB、query和environment中的数据示例

{
        "Id" : 1,
        "compName" : "Samsung Electronics Co.",
        "symbol" : "005930-KRX",
        "analyst" : [
                {
                        "analystId" : 4,
                        "analystInit" : "SJ",
                        "analystFName" : "Steve",
                        "analystLName" : "Jobs",
                        "analystEmail" : "steve.jobs@apple.com"
                }
        ],
        "associates" : [
                {
                        "analystId" : 7,
                        "analystInit" : "BG",
                        "analystFName" : "Bill",
                        "analystLName" : "Gates",
                        "analystEmail" : "bill.gates@microsoft.com"
                },
                {
                        "analystId" : 10,
                        "analystInit" : "MJ",
                        "analystFName" : "Michael",
                        "analystLName" : "Jordan",
                        "analystEmail" : "michael.jordan@nba.com"
                }
        ],
        "gics" : "75301020",
        "cusip" : null
}
波科


看来我遗漏了一些明显的东西。我做错了什么?

只需这样做投影:

var comps=等待compCollection
.AsQueryable()
.选择(c=>new
{
...
ResAnsFName=c.Analyst.first().resansfirstname
...
})
.ToListAsync();

在CompanyClass类中不存在ResAns属性,因此无法使用该属性。 此外,BsonElements与您的MongoDB数据不匹配。 Select应足以执行Linq,而不需要FirstorDefault或ToList()

更新

BSON:

C#强类型对象:

    public class User
    {
        [BsonId]
        public ObjectId Id { get; set; }
        [BsonElement("name")]
        public string Name { get; set; }
        [BsonElement("blog")]
        public string Blog { get; set; }
        [BsonElement("age")]
        public int Age { get; set; }
        [BsonElement("location")]
        public string Location { get; set; }
    }

我很抱歉。那是行不通的。当我做那个投影时,我仍然会得到同样的错误(@inquisitive\u one如果你把它放到一个控制台应用程序中,你会发现它工作得非常好。对不起,你是对的。我已经更新了我发布给show Analyst的帖子,而不是在CompanyClass类中重新发布。我尝试了你的建议,但仍然得到相同的错误:你有没有尝试修复bsonement名称?在哪个类中?CompanyClass还是AnalystClass?你有什么建议吗?这两个类:[BsonElement(“issuerId”)]=[BsonElement(“Id”)][BsonElement(“firstName”)]=[BsonElement(“analystFName”)]……我恐怕有点糊涂了。我不明白更改BsonElement名称会有什么帮助。
compCollection = GetMonDB("Companies").GetCollection<CompanyClass>("coverage");
var comps = compCollection.AsQueryable()
.Select(c => new { 
    CompName = c.CompName,
    Symbol = c.Symbol,
    ResAnsFName = c.Analyst.Select(x => x.ResAnFirstName)  <-- Problem line
    CUSIP = c.Cusip
});
C# MongoDB.Driver = 2.12
MongoDB = 4.2
Windows = Win10
 ResAnsFName = c.Analyst.Select(x => x.ResAnFirstName)
{ 
  "_id" : ObjectId("59ce6b34f48f171624840b05"), 
  "name" : "Nikola", 
  "blog" : "rubikscode.net", 
  "age" : 30, 
  "location" : "Beograd" 
}
    public class User
    {
        [BsonId]
        public ObjectId Id { get; set; }
        [BsonElement("name")]
        public string Name { get; set; }
        [BsonElement("blog")]
        public string Blog { get; set; }
        [BsonElement("age")]
        public int Age { get; set; }
        [BsonElement("location")]
        public string Location { get; set; }
    }