我有一个linq查询,效果很好。
var data = from c in context.C
where c.ID == 1
select new
{
cc = c.CC,
oc= c.OC,
ec = c.EC
};
我希望将此查询中的信息加载到我的数据表中。
如果可以选择不延长任何方法,我会很高兴听到它们,但任何帮助都会受到赞赏。
此致 大卫
答案 0 :(得分:3)
从.Net 3.5开始,CopyToDataTable方法可能就是你所追求的。
答案 1 :(得分:0)
好的,我相信我找到了它:
var data = from c in context.C
where c.ID == 1
select new
{
cc = c.CC,
oc= c.OC,
ec = c.EC
};
添加扩展方法:
use System.Reflection;
public DataTable LINQToDataTable<T>(IEnumerable<T> varlist)
{
DataTable dtReturn = new DataTable();
// column names
PropertyInfo[] oProps = null;
if (varlist == null) return dtReturn;
foreach (T rec in varlist)
{
if (oProps == null)
{
oProps = ((Type)rec.GetType()).GetProperties();
foreach (PropertyInfo pi in oProps)
{
Type colType = pi.PropertyType;
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition()
== typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[0];
}
dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
}
}
DataRow dr = dtReturn.NewRow();
foreach (PropertyInfo pi in oProps)
{
dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue
(rec, null);
}
dtReturn.Rows.Add(dr);
}
return dtReturn;
}
现在使用它:
DataTable dt = LINQToDataTable(data);