近期项目中需要从mongodb中获取数据,表的数量较多且表的格式也不一样,因此决定采用泛型来适配各种目标类型的数据转换。
public List<T> FindDatas<T>(DateTime starttime, DateTime endTime)
{
List<T> datas = new List<T>();
FilterDefinitionBuilder<BsonDocument> builder = Builders<BsonDocument>.Filter;
FilterDefinition<BsonDocument> filter = builder.And(
builder.Gt("DATE_TIME", starttime), builder.Lt("DATE_TIME", endTime));
//排序生成器
SortDefinitionBuilder<BsonDocument> builderSort = Builders<BsonDocument>.Sort;
//排序约束 Ascending 正序 Descending 倒序
SortDefinition<BsonDocument> sort = builderSort.Ascending("DATE_TIME");
var result = GetCollectionByType(typeof(T)).Find<BsonDocument>(filter).Sort(sort).ToList();
if (result.Count != 0)
{
foreach (var item in result)
{
datas.Add(BsonSerializer.Deserialize<T>(item));
}
}
return datas;
}
IMongoCollection<BsonDocument> GetCollectionByType(Type type)
{
switch (type.Name)
{
case "Test":
return collection_Test;
default:
return collection_Online;
}
}