获取Linq-to SQL查询以显示在GridView上

时间:2008-09-27 07:46:03

标签: c# linq linq-to-sql gridview

我有一个非常复杂的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 个答案:

答案 0 :(得分:3)

gridview.DataSource = tikPart.ToList();
gridview.DataBind();

答案 1 :(得分:3)

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

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

默认情况下,DataContext使用延迟加载,因此只有在枚举IQueryable时才从数据库中获取数据。 ToList()执行Enumeration并执行调用,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上使用自动生成的列,以便将返回对象中的每个属性转换为列,或者您可以使用设计器编写列并在那里设置绑定规则。

答案 2 :(得分:0)

您可以设置没有数据源的Gridview。设置gridview列,并在codebehind中将结果绑定到网格视图。

答案 3 :(得分:0)

您可以绑定IQueryable&lt;&gt;使用LinqDataSource控件键入GridView。 http://johnsobrepena.blogspot.com/2010/01/data-bind-coolgridview-to-iqueryable.html