IList转DataTable
来源:互联网 发布:爬虫数据 编辑:程序博客网 时间:2024/06/01 10:02
#region 数据集互操作
/// <summary>
/// 将集合类转换成DataTable
/// </summary>
/// <param name="list">集合</param>
/// <returns></returns>
public static DataTable ToDataTable(IList list)
{
DataTable result = new DataTable();
if (list.Count > 0)
{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
result.Columns.Add(pi.Name, pi.PropertyType);
}
for (int i = 0; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
/// <summary>
/// 将泛型集合类转换成DataTable
/// </summary>
/// <typeparam name="T">集合项类型</typeparam>
/// <param name="list">集合</param>
/// <returns>数据集(表)</returns>
public static DataTable ToDataTable<T>(IList<T> list)
{
return ConvertX.ToDataTable<T>(list, null);
}
/// <summary>
/// 将泛型集合类转换成DataTable
/// </summary>
/// <typeparam name="T">集合项类型</typeparam>
/// <param name="list">集合</param>
/// <param name="propertyName">需要返回的列的列名</param>
/// <returns>数据集(表)</returns>
public static DataTable ToDataTable<T>(IList<T> list, params string[] propertyName)
{
List<string> propertyNameList = new List<string>();
if (propertyName != null)
propertyNameList.AddRange(propertyName);
DataTable result = new DataTable();
if (list.Count > 0)
{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
if (propertyNameList.Count == 0)
{
result.Columns.Add(pi.Name, pi.PropertyType);
}
else
{
if (propertyNameList.Contains(pi.Name))
result.Columns.Add(pi.Name, pi.PropertyType);
}
}
for (int i = 0; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
{
if (propertyNameList.Count == 0)
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
else
{
if (propertyNameList.Contains(pi.Name))
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
}
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
#endregion
}
public class ConvertXToDataTableTester : ITest
{
#region ITest 成员
public string Name
{
get { return new ConvertXToDataTableTester().GetType().Name; }
}
public void StartRuntime()
{
//Test1(ToDataTable<>):boundary
CollectionBase<Item> items1 = new CollectionBase<Item>();
items1.Add(new Item("item1_1", 1));
items1.Add(new Item("item1_2", "null"));
items1.Add(new Item("item1_3", 3));
DataTable dt = ConvertX.ToDataTable<Item>(items1);
foreach (DataRow dr in dt.Rows)
{
Console.WriteLine("{0},{1}", dr["text"].ToString(), dr[1].ToString());
}
//Test2(ToDataTable):
ArrayList items2 = new ArrayList();
items2.Add(new Item("item2_1", 3));
items2.Add(new Item("item2_2", 4));
items2.Add(new Item("item2_3", 5));
DataTable dt2 = ConvertX.ToDataTable(items2);
foreach (DataRow dr in dt2.Rows)
{
Console.WriteLine("{0},{1}", dr["text"].ToString(), dr[1].ToString());
}
//Test3(ToDataTable<>):
IList<Item> items3 = new CollectionBase<Item>();
items3.Add(new Item("item3_1", 3));
items3.Add(new Item("item3_2", 4));
items3.Add(new Item("item3_3", 5));
DataTable dt3 = ConvertX.ToDataTable<Item>(items3, "Text");
foreach (DataRow dr in dt3.Rows)
{
//Console.WriteLine("{0},{1}", dr["text"].ToString(), dr[1].ToString());
Console.WriteLine("{0}", dr["text"].ToString());
}
//Test4(ToDataTable<>):Error with error column name
try
{
foreach (DataRow dr in dt.Rows)
{
Console.WriteLine(dr["errorName"].ToString());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
#endregion
}
public class Item
{
public Item(string text, object value)
{
this.text = text;
this.value = value;
}
private string text;
public string Text
{
get
{
return this.text;
}
set
{
this.text = value;
}
}
private object value;
public object Value
{
get
{
return this.value;
}
set
{
this.value = value;
}
}
}
/// <summary>
/// 将集合类转换成DataTable
/// </summary>
/// <param name="list">集合</param>
/// <returns></returns>
public static DataTable ToDataTable(IList list)
{
DataTable result = new DataTable();
if (list.Count > 0)
{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
result.Columns.Add(pi.Name, pi.PropertyType);
}
for (int i = 0; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
/// <summary>
/// 将泛型集合类转换成DataTable
/// </summary>
/// <typeparam name="T">集合项类型</typeparam>
/// <param name="list">集合</param>
/// <returns>数据集(表)</returns>
public static DataTable ToDataTable<T>(IList<T> list)
{
return ConvertX.ToDataTable<T>(list, null);
}
/// <summary>
/// 将泛型集合类转换成DataTable
/// </summary>
/// <typeparam name="T">集合项类型</typeparam>
/// <param name="list">集合</param>
/// <param name="propertyName">需要返回的列的列名</param>
/// <returns>数据集(表)</returns>
public static DataTable ToDataTable<T>(IList<T> list, params string[] propertyName)
{
List<string> propertyNameList = new List<string>();
if (propertyName != null)
propertyNameList.AddRange(propertyName);
DataTable result = new DataTable();
if (list.Count > 0)
{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
if (propertyNameList.Count == 0)
{
result.Columns.Add(pi.Name, pi.PropertyType);
}
else
{
if (propertyNameList.Contains(pi.Name))
result.Columns.Add(pi.Name, pi.PropertyType);
}
}
for (int i = 0; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
{
if (propertyNameList.Count == 0)
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
else
{
if (propertyNameList.Contains(pi.Name))
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
}
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
#endregion
}
public class ConvertXToDataTableTester : ITest
{
#region ITest 成员
public string Name
{
get { return new ConvertXToDataTableTester().GetType().Name; }
}
public void StartRuntime()
{
//Test1(ToDataTable<>):boundary
CollectionBase<Item> items1 = new CollectionBase<Item>();
items1.Add(new Item("item1_1", 1));
items1.Add(new Item("item1_2", "null"));
items1.Add(new Item("item1_3", 3));
DataTable dt = ConvertX.ToDataTable<Item>(items1);
foreach (DataRow dr in dt.Rows)
{
Console.WriteLine("{0},{1}", dr["text"].ToString(), dr[1].ToString());
}
//Test2(ToDataTable):
ArrayList items2 = new ArrayList();
items2.Add(new Item("item2_1", 3));
items2.Add(new Item("item2_2", 4));
items2.Add(new Item("item2_3", 5));
DataTable dt2 = ConvertX.ToDataTable(items2);
foreach (DataRow dr in dt2.Rows)
{
Console.WriteLine("{0},{1}", dr["text"].ToString(), dr[1].ToString());
}
//Test3(ToDataTable<>):
IList<Item> items3 = new CollectionBase<Item>();
items3.Add(new Item("item3_1", 3));
items3.Add(new Item("item3_2", 4));
items3.Add(new Item("item3_3", 5));
DataTable dt3 = ConvertX.ToDataTable<Item>(items3, "Text");
foreach (DataRow dr in dt3.Rows)
{
//Console.WriteLine("{0},{1}", dr["text"].ToString(), dr[1].ToString());
Console.WriteLine("{0}", dr["text"].ToString());
}
//Test4(ToDataTable<>):Error with error column name
try
{
foreach (DataRow dr in dt.Rows)
{
Console.WriteLine(dr["errorName"].ToString());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
#endregion
}
public class Item
{
public Item(string text, object value)
{
this.text = text;
this.value = value;
}
private string text;
public string Text
{
get
{
return this.text;
}
set
{
this.text = value;
}
}
private object value;
public object Value
{
get
{
return this.value;
}
set
{
this.value = value;
}
}
}
public interface ITest
{
string Name { get; }
void StartRuntime();
}
{
string Name { get; }
void StartRuntime();
}
using System;
using System.Collections.Generic;
using System.Text;
using yd.Base;
using yd.Base.Collections.Generic;
using yd.Util;
namespace ConsoleApplicationTester
{
class Program
{
static void Main(string[] args)
{
bool debugging = false;
CollectionBase<ITest> testers = new CollectionBase<ITest>();
//testers.Add(new QuarterTester());
//testers.Add(new ConvertXToDataTableTester());
foreach (ITest tester in testers)
{
if (debugging == false)
{
try
{
tester.StartRuntime();
Console.WriteLine("___________________________________");
Console.WriteLine(tester.Name + " succeed!");
}
catch (Exception ex)
{
Console.WriteLine(tester.Name + " with errors!");
Console.WriteLine("____________The error is under the line!__________");
Console.WriteLine(ex.Message);
Console.WriteLine("!!!!!!!!!!!!!!!!!!!!@@@@@@@!!!!!!!!!!!!!!!!!!!!");
}
}
else
{
tester.StartRuntime();
Console.WriteLine("___________________________________");
Console.WriteLine(tester.Name + " succeed!");
}
}
}
}
}
using System.Collections.Generic;
using System.Text;
using yd.Base;
using yd.Base.Collections.Generic;
using yd.Util;
namespace ConsoleApplicationTester
{
class Program
{
static void Main(string[] args)
{
bool debugging = false;
CollectionBase<ITest> testers = new CollectionBase<ITest>();
//testers.Add(new QuarterTester());
//testers.Add(new ConvertXToDataTableTester());
foreach (ITest tester in testers)
{
if (debugging == false)
{
try
{
tester.StartRuntime();
Console.WriteLine("___________________________________");
Console.WriteLine(tester.Name + " succeed!");
}
catch (Exception ex)
{
Console.WriteLine(tester.Name + " with errors!");
Console.WriteLine("____________The error is under the line!__________");
Console.WriteLine(ex.Message);
Console.WriteLine("!!!!!!!!!!!!!!!!!!!!@@@@@@@!!!!!!!!!!!!!!!!!!!!");
}
}
else
{
tester.StartRuntime();
Console.WriteLine("___________________________________");
Console.WriteLine(tester.Name + " succeed!");
}
}
}
}
}
- IList转DataTable
- IList 转DataTable
- C# dataTable 转 IList 问题
- DataTable还是IList
- DataTable转换为IList
- DataTable转换成IList
- IList to datatable
- DataTable转换成IList
- DataTable转换成IList
- IList转换Datatable
- C# DataTable,DataSet,IList,IEnumerable 互转扩展属性
- DataTable转换成IList(二)
- ILIST<t>转换成DataTable
- DataTable转换成IList 【转载】
- 将 IList 或 IList 转换为Dataset或DataTable
- 将 IList 或 IList 转换为Dataset或DataTable
- [转]利用.NET中的反射机制实现IList到DataTable的转换
- 关于TypedDataTable 、 DataTable 、 ArrayList 、 IList 、Array
- solr或lucene中出现there are more terms than documents in field "name", but it's impossible to sort on tokenized fields异常
- PIC单片机开发中PICC编译环境的应用
- 正则表达式笔记
- 通过了09年下半年信息系统项目管理师考试,得瑟下
- fsck详解
- IList转DataTable
- SQL:為字符串外的臨時表插入數據
- 用Struts的Token机制解决表单重复提交
- 运算符重载,什么时候用友元?
- php获取表单提交的数据
- 性能测试VS负载测试VS压力测试
- 2008 excel
- JUnit4快速入门(转)
- 关于SQLServer2005的学习笔记——约束、Check、触发器的执行顺序