MongoDB 用于搜索文档(T 类文档)的 C# 方法
MongoDB C# Methode to search for a Document (Document of Type T)
我确实用 C# 为 MongoDB 编写了一个 CRUD 应用程序。我试图让它尽可能通用(至少对我来说尽可能好)。
所以我使用类型 T 作为文档的类型。
public List<T> SearchDocument<T>(string collection, string fieldName, string fieldValue)
{
var _collection = db.GetCollection<T>(collection);
var filter = Builders<T>.Filter.Eq(fieldName, fieldValue);
var result = _collection.Find(filter).ToList();
return result;
}
该方法有效并在 MongoDb 中找到具有给定字段的给定值的文档。
我不知道的是如何使 "string filedValue" 的类型也输入 T 可以这么说。
即使我已经使用了 T,如何使 fieldValue 的类型也通用?
public List<T> SearchDocument<T>(string collection, string fieldName, string fieldValue)
应该是
public List<T> SearchDocument<T>(string collection, string fieldName, <an other T> fieldValue)
由于第二个 T 与第一个 T 完全不同,所以我只是写在这里所以我希望有人能理解我的意思。我知道它不能与 SearchDoc
中的 T 相同
谢谢 :) 输入
您需要第二个泛型类型 TField
:
public List<T> SearchDocument<T, TField>(string collection, string fieldName, TField fieldValue)
{
var _collection = db.GetCollection<T>(collection);
var filter = Builders<T>.Filter.Eq<TField>(fieldName, fieldValue);
var result = _collection.Find(filter).ToList();
return result;
}
我确实用 C# 为 MongoDB 编写了一个 CRUD 应用程序。我试图让它尽可能通用(至少对我来说尽可能好)。
所以我使用类型 T 作为文档的类型。
public List<T> SearchDocument<T>(string collection, string fieldName, string fieldValue)
{
var _collection = db.GetCollection<T>(collection);
var filter = Builders<T>.Filter.Eq(fieldName, fieldValue);
var result = _collection.Find(filter).ToList();
return result;
}
该方法有效并在 MongoDb 中找到具有给定字段的给定值的文档。 我不知道的是如何使 "string filedValue" 的类型也输入 T 可以这么说。
即使我已经使用了 T,如何使 fieldValue 的类型也通用?
public List<T> SearchDocument<T>(string collection, string fieldName, string fieldValue)
应该是
public List<T> SearchDocument<T>(string collection, string fieldName, <an other T> fieldValue)
由于第二个 T 与第一个 T 完全不同,所以我只是写在这里所以我希望有人能理解我的意思。我知道它不能与 SearchDoc
中的 T 相同谢谢 :) 输入
您需要第二个泛型类型 TField
:
public List<T> SearchDocument<T, TField>(string collection, string fieldName, TField fieldValue)
{
var _collection = db.GetCollection<T>(collection);
var filter = Builders<T>.Filter.Eq<TField>(fieldName, fieldValue);
var result = _collection.Find(filter).ToList();
return result;
}