如何将LINQ查询到的结果由匿名类型var转换成DataTable对象

 我来答
哼罢时自狂7095
2017-08-25 · 超过209用户采纳过TA的回答
知道小有建树答主
回答量:312
采纳率:0%
帮助的人:329万
展开全部
可以对现有的IQueryable 接口进行扩展 ,之后就可以使用这样得调用:DataContext db = new DataContext (); //具体请使用你自己的 DataContext 实现的对象。DataTable dt=new DataTable();var query = from u in db.Users where u.RoleID ==3 select u; //得到 IQueryable 对象 //这样调用dt= query.ToDataTable(db); ...可以这样实现这个扩展://注意这里写成扩展方法的形式,也可以单独调用 /// <summary>
/// 对 System.Data.Linq 的扩展
/// 从给定的Linq To SQL 查询获取 DataTable 对象
/// </summary>
/// <param name="source"></param>
/// <param name="db"></param>
/// <returns></returns>
public static DataTable ToDataTable(this IQueryable source, DataContext db)
{
//将 LinqToSQL查询传递给 GetCommand()以获取DbCommand对象
DbCommand cmd = db.GetCommand(source);
//打开数据库链接,这里可以进一步扩展,比如传递进来自己定义的继承自 DbConnection 的对象
if(db.Connection.State== ConnectionState.Closed)
db.Connection.Open();
//声明 DataTable 对象
DataTable dt = new DataTable();
//调用DataTable 对象的 Load方法 ,从 DbDataReader 对象加载数据。
dt.Load(cmd.ExecuteReader());
//关闭DbConnection 链接
db.Connection.Close(); return dt;
}
}//这里为了简单 返回的是DataTable对象,如果你有多个结果集的查询,可以自己扩展成DataSet 实现。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式