Ich habe die folgende Struktur:Projektion von mongodb Subdokument mit C# .NET-Treiber 2.0
public class Category
{
[BsonElement("name")]
public string CategoryName { get; set; }
[BsonDateTimeOptions]
[BsonElement("dateCreated")]
public DateTime DateStamp { get; set; }
[BsonElement("tasks")]
public List<TaskTracker.Task> Task { get; set; }
}
public class Task
{
[BsonElement("name")]
public string TaskName { get; set; }
[BsonElement("body")]
public string TaskBody { get; set; }
}
Ich versuche, eine Category
abfragen alle TaskName
Werte zu erhalten und sie dann in eine Liste zurück angezeigt werden in ein Listenfeld
habe ich versucht, mit dieser Abfrage:
var getTasks = Categories.Find<Category>(x => x.CategoryName == catName)
.Project(Builders<Category>.Projection
.Include("tasks.name")
.Exclude("_id"))
.ToListAsync()
.Result;
Aber was bekommen zurückgekehrt ist: {"tasks": [{"name: "test"}]}
.
Gibt es sowieso, nur den String-Wert zurückzugeben?
Ich habe Ihre Abfrage versucht und habe versucht, es zu einer 'List>' 'aber was wird zurückgegeben wird: '{System.Linq.Enumerable.WhereSelectEnumerableIterator } ' –
Lynchy
Ja, das ist konvertierbar zu einem IEnumerable. Könnten Sie etwas mehr Code über das, was Sie tun, zur Verfügung stellen? –
Ich denke, ich habe eine Lösung gefunden. Ich habe die 'taskNames'-Abfrage wie folgt zurückgeliefert:' taskNames [0] .ToList(); 'zurückgeben und das schien alles zu funktionieren. Ist das eine gute Praxis? – Lynchy