如何将linq to sql语句得到的结果(多条记录)转换为dataset的对象?给个简单的例子?
2个回答
2013-04-09
展开全部
可以对现有的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 实现。
2013-04-09
展开全部
// Bind the System.Windows.Forms.DataGridView object
// to the System.Windows.Forms.BindingSource object.
dataGridView.DataSource = bindingSource;
// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);
DataTable orders = ds.Tables["SalesOrderHeader"];
// Query the SalesOrderHeader table for orders placed
// after August 8, 2001.
IEnumerable<DataRow> query =
from order in orders.AsEnumerable()
where order.Field<DateTime>("OrderDate") > new DateTime(2001, 8, 1)
select order;
// Create a table from the query.
DataTable boundTable = query.CopyToDataTable<DataRow>();
// Bind the table to a System.Windows.Forms.BindingSource object,
// which acts as a proxy for a System.Windows.Forms.DataGridView object.
bindingSource.DataSource = boundTable;
// to the System.Windows.Forms.BindingSource object.
dataGridView.DataSource = bindingSource;
// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);
DataTable orders = ds.Tables["SalesOrderHeader"];
// Query the SalesOrderHeader table for orders placed
// after August 8, 2001.
IEnumerable<DataRow> query =
from order in orders.AsEnumerable()
where order.Field<DateTime>("OrderDate") > new DateTime(2001, 8, 1)
select order;
// Create a table from the query.
DataTable boundTable = query.CopyToDataTable<DataRow>();
// Bind the table to a System.Windows.Forms.BindingSource object,
// which acts as a proxy for a System.Windows.Forms.DataGridView object.
bindingSource.DataSource = boundTable;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询