如何将linq to sql语句得到的结果(多条记录)转换为dataset的对象?给个简单的例子?

 我来答
匿名用户
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 实现。
匿名用户
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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式