Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C查询基本BSON,使用LINQ只知道键和值_C#_Json_Mongodb_Linq_Bson - Fatal编程技术网

C# C查询基本BSON,使用LINQ只知道键和值

C# C查询基本BSON,使用LINQ只知道键和值,c#,json,mongodb,linq,bson,C#,Json,Mongodb,Linq,Bson,我有一个MongoDB集合,我想从中查询只知道密钥名称的文档。 我不能使用硬编码的基类,因为在运行时,键上的amount将随时间而变化。但作为用户,我会知道他们的名字 我试着这样做: var collection = database.GetCollection<BsonDocument>(mongoCollectionName); List<BsonDocument> list = (from c in collection.AsQuer

我有一个MongoDB集合,我想从中查询只知道密钥名称的文档。 我不能使用硬编码的基类,因为在运行时,键上的amount将随时间而变化。但作为用户,我会知道他们的名字

我试着这样做:

        var collection = database.GetCollection<BsonDocument>(mongoCollectionName);
        List<BsonDocument> list = (from c in collection.AsQueryable<BsonDocument>()
                                   where c.GetElement("serial").Value == 1
                                   select c).ToList(); 
但是我得到了{document}.GetElementserial.Value不受支持

那么,有没有一种方法可以使用linq查询基本BSON


谢谢

是否有必要使用LINQ?我是说你不可能做这样的事

var collection = database.GetCollection<BsonDocument>(mongoCollectionName);
List<BsonDocument> list = collection.Find(Builders<BsonDocument>.Filter.Eq("serial", 1)).ToList();


甚至可以将其转换为字典。

只需使viewModel与MongoDb中的属性相同即可。 要得到值为1的序列列,只需这样做

public class ViewModel {
    .... model Properties goes here
}

var SerialNo = 1;
var collection = mongoDatabase.GetCollection<ViewModel>("name of your collection");
var builder = Builders<ViewModel>.Filter;
builder.Eq(x => x.serial, SerialNo );

如果BsonDocument类有一个Serial属性,那么如果我正确地理解您,您可以在c.Serial==1的位置执行此操作。在运行时,您只有名称serial。在这种情况下,可以改用生成器。看见不要以为你能用LINQ。正如上面写的,我没有所有的钥匙。键会随着时间的推移而改变,所以不能像上面写的那样硬编码基类。