0

我有一个非常复杂的 Linq 查询,我似乎无法进入 LinqDataSsource 以在 GridView 中使用:

IEnumerable<ticket> tikPart = (
    from p in db.comments where 
        p.submitter == me.id && 
        p.ticket.closed == DateTime.Parse("1/1/2001") && 
        p.ticket.originating_group != me.sub_unit 
    select p.ticket
    ).Distinct();

我怎样才能把它变成一个 GridView?谢谢!

4

4 回答 4

3
gridview.DataSource = tikPart.ToList();
gridview.DataBind();
于 2008-09-27T07:47:23.657 回答
3

@leppie - 将 IQueryable 附加为数据源时,无需调用 ToList() 。

如果在调用 DataBind 方法之前尚未处理您的 DataContext,则 ToList 是一个冗余调用。

默认情况下,DataContext 使用延迟加载,以便仅在枚举 IQueryable 时从数据库中获取数据。ToList() 执行枚举并执行调用,DataBind() 也是如此。

所以你可以做这样的事情:

using(MyDataContext ctx = new MyDataContext(){
  this.MyGridView.DataSource = from something in ctx.Somethings where something.SomeProperty == someValue select something;
  this.MyGridView.DataBind();
}

取决于您如何处理 DataContext 确定要绑定到数据源的内容。

然后,您可以在 GridView 上使用自动生成的列,以便返回对象中的每个属性都变成一列,或者您可以使用设计器编写列并在那里设置绑定规则。

于 2008-09-27T08:04:50.213 回答
0

您可以在没有数据源的情况下设置 Gridview。设置 gridview 列,并在代码隐藏中将该结果绑定到网格视图。

于 2008-09-27T07:48:36.397 回答
0

您可以使用 LinqDataSource 控件将 IQueryable<> 类型绑定到 GridView。http://johnsobrepena.blogspot.com/2010/01/data-bind-coolgridview-to-iqueryable.html

于 2010-02-02T02:51:34.730 回答