如何修改linq to sql的查询结果集
1个回答
展开全部
可以对现有的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 实现。
/// 对 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 实现。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询