80s*_*ker 3 c# mongodb mongodb-query
有没有人使用过 C# .Net MongoDB Driver FilterDefinitionBuilder's not in filter?这是我放在一起的一个简单示例,但我似乎无法开始工作。假设我们必须保持集合原样。目标是仅检索不在指定 ArtistGenresDocument 列表中的 ArtistDetailsDocument。
该代码不会编译并声明“无法将 lambda 表达式转换为类型 'MongoDB.Driver.FieldDefinition ArtistDetailsDocument,ArtistGenresDocument',因为它不是委托类型”。
感谢帮助!\毫米/
public class ArtistDetailsDocument
{
public ObjectId Id { get; set; }
public String artist_ID { get; set; }
public String artistName { get; set; }
}
public class ArtistGenresDocument
{
public ObjectId Id { get; set; }
public String artist_ID { get; set; }
public String genre { get; set; }
}
IEnumerable<ArtistGenresDocument> list = await ArtistGenresCollection.Find(x => x.genre == "Pop" | x.genre == "Easy Listening").ToListAsync();
var filter = Builders<ArtistDetailsDocument>.Filter.Nin<ArtistGenresDocument>(x => x.artist_ID, list);
var ArtistDetailsDocuments = ArtistDetailsCollection.Find(filter);
Run Code Online (Sandbox Code Playgroud)
这是在 pieperu 帮助下的解决方案!
IEnumerable<ArtistGenresDocument> list = await ArtistGenresCollection
.Find(x => x.genre == "Pop" || x.genre == "Easy Listening")
.ToListAsync();
var filter = Builders<ArtistDetailsDocument>
.Filter
.Nin(x => x.artist_ID, list.Select(l => l.artist_ID));
var ArtistDetailsDocuments = await ArtistDetailsCollection
.Find(filter)
.ToListAsync();
public class ArtistDetailsDocument
{
public ObjectId Id { get; set; }
public String artist_ID { get; set; }
public String artistName { get; set; }
}
public class ArtistGenresDocument
{
public ObjectId Id { get; set; }
public String artist_ID { get; set; }
public String genre { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10249 次 |
| 最近记录: |