linq 查询结果转换成DataTable 方法
2010-07-27 14:37
351 查看
转换方法代码:
代码 private DataTable ConvertToTable(IQueryable query)
{
DataTable dtList = new DataTable();
bool isAdd = false;
PropertyInfo[] objProterties = null;
foreach (var item in query)
{
if (!isAdd)
{
objProterties = item.GetType().GetProperties();
foreach (var itemProterty in objProterties)
{
Type type = null;
if (itemProterty.PropertyType != typeof(string) && itemProterty.PropertyType != typeof(int) && itemProterty.PropertyType != typeof(DateTime))
{
type = typeof(string);
}
else
{
type = itemProterty.PropertyType;
}
dtList.Columns.Add(itemProterty.Name, type);
}
isAdd = true;
}
var row = dtList.NewRow();
foreach (var pi in objProterties)
{
row[pi.Name] = pi.GetValue(item, null);
}
dtList.Rows.Add(row);
}
return dtList;
}
调用方法:
//linq查询语句
var queryData =
from dv in emcsDataContext.DailyVals
join vrb in emcsDataContext.Variables on dv.VariableID equals vrb.VariableID
where dv.VariableID == variableId && dv.CollectTime >= selectDate && dv.CollectTime < selectDate.AddDays(1)
orderby dv.CollectTime
select new
{
dv.ID,
dv.VariableID,
dv.CollectTime,
dv.VariableValue,
vrb.UpLimite,
vrb.LowLimite,
statDate = dv.CollectTime.ToShortTimeString()
};
//转换
ConvertToTable(queryData)
代码 private DataTable ConvertToTable(IQueryable query)
{
DataTable dtList = new DataTable();
bool isAdd = false;
PropertyInfo[] objProterties = null;
foreach (var item in query)
{
if (!isAdd)
{
objProterties = item.GetType().GetProperties();
foreach (var itemProterty in objProterties)
{
Type type = null;
if (itemProterty.PropertyType != typeof(string) && itemProterty.PropertyType != typeof(int) && itemProterty.PropertyType != typeof(DateTime))
{
type = typeof(string);
}
else
{
type = itemProterty.PropertyType;
}
dtList.Columns.Add(itemProterty.Name, type);
}
isAdd = true;
}
var row = dtList.NewRow();
foreach (var pi in objProterties)
{
row[pi.Name] = pi.GetValue(item, null);
}
dtList.Rows.Add(row);
}
return dtList;
}
调用方法:
//linq查询语句
var queryData =
from dv in emcsDataContext.DailyVals
join vrb in emcsDataContext.Variables on dv.VariableID equals vrb.VariableID
where dv.VariableID == variableId && dv.CollectTime >= selectDate && dv.CollectTime < selectDate.AddDays(1)
orderby dv.CollectTime
select new
{
dv.ID,
dv.VariableID,
dv.CollectTime,
dv.VariableValue,
vrb.UpLimite,
vrb.LowLimite,
statDate = dv.CollectTime.ToShortTimeString()
};
//转换
ConvertToTable(queryData)
相关文章推荐
- 如何将linq查询的结果 转换为DataTable,最简单的实现方法
- 如何将LINQ查询到的结果由匿名类型var转换成DataTable对象
- Linq查询结果转换为表
- Linq to Sql 或linq to entities 与SQL 查询结果不一致,返回重复结果问题解决方法
- 使用linq机制 实现datatable连表查询 结果赋值到一个新的datatable
- 用Linq和Dataview筛选查询DataTable数据,DataTable和List相互转换
- ThinkPHP实现转换数据库查询结果数据到对应类型的方法
- mysql查询结果转换为PHP数组的几种方法的区别
- Herbinate中用hql语句查询结果返回转换为对象的方法
- 根据反射将数据库查询结果Datatable,转换为对应的Model类实体对象
- 单表多条件查询,匿名类型,匿名对象,嵌套查询,Linq序列转换后调用外部方法
- DataTable与Linq相互转换方法
- 将linq查询转换为DataTable对象——学习笔记
- linq查询结果转换为指定字段类型的list集合
- DataTable与Linq相互转换方法
- mysql查询结果转换为PHP数组的几种方法的区别
- LINQ TO XML查询结果null 解决方法
- Hibernate3.2.6 原生sql 查询使用方法,将查询结果直接转换为POJO,不必非要指定属性大写
- EF-Linq将查询结果转换为List<string>
- DataTable与Linq相互转换方法