110,538
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// MongoDB添加数据
/// </summary>
/// <typeparam name="T">类</typeparam>
/// <param name="connstr">连接字符串如127.0.0.1</param>
/// <param name="DatabaseName">数据库名</param>
/// <param name="CollectionName">表名</param>
/// <param name="t">添加的类</param>
/// <returns>如果为空证明正确,不为空则为异常信息</returns>
public static string WriteCollection<T>(String connstr, String DatabaseName, String CollectionName, T t)
{
String Message = string.Empty;
try
{
using (Mongo_db = new MongoDBHelper(connstr, DatabaseName))
{
if (t != null)
{
if (t.GetType().Name.IndexOf("List") >= 0)
{
//这里我自己写的判断传递进来的t是泛型集合的
//问题就在于我如何把这T行转换有数据的List<T>型呢
}
else
{
Mongo_db.Insert<T>(t, CollectionName);
}
}
}
}
catch (Exception ex)
{
Message = ex.Message;
}
return Message;
}
调用方法如: List<M_Personal> modelList = new List<M_Personal>();
Message = WriteDB.WriteCollection<List<M_Personal>;("127.0.0.1", "table1", "table3", modelList);
请高手们解答下,告诉我如何判断和转换,谢谢大神们,貌似要用到反射,我试了一些没有弄成我想要的。。
public static string WriteCollection<T>(String connstr, String databaseName, String collectionName, IList<T> t)
{
String message = string.Empty;
try
{
var list = new List<T>();
list.Insert(0, t[0]);
Console.WriteLine(list.Count); // 输出1
list.Clear();
list.AddRange(t);
Console.WriteLine(list.Count); // 输出3
//using (Mongo_db = new MongoDBHelper(connstr, DatabaseName))
//{
// if (t != null)
// {
// Mongo_db.Insert<T>(t, CollectionName);
// }
//}
}
catch (Exception ex)
{
message = ex.Message;
}
return message;
}
static void Main(string[] args)
{
var list = new List<string>();
list.Add("a");
list.Add("b");
list.Add("c");
WriteCollection(string.Empty, string.Empty, string.Empty, list);
Console.ReadLine();
}
[/quote]
大侠,你这方法是对的,可以这么用,非常感谢你,分给你了!!!!
public static string WriteCollection<T>(String connstr, String databaseName, String collectionName, IList<T> t)
{
String Message = string.Empty;
try
{
using (Mongo_db = new MongoDBHelper(connstr, DatabaseName))
{
if (t != null)
{
Mongo_db.Insert<T>(t, CollectionName);
}
}
}
catch (Exception ex)
{
Message = ex.Message;
}
return Message;
}
// 调用
List<M_Personal> modelList = new List<M_Personal>();
Message = WriteDB.WriteCollection<M_Personal>;("127.0.0.1", "table1", "table3", modelList);
这样写不知道行不行?