获取Linq-toSQL查询以显示在GridView上
时间:2020-03-06 14:49:14 来源:igfitidea点击:
我有一个非常复杂的Linq查询,似乎无法进入用于GridView的LinqDataSsource:
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?谢谢!
解决方案
gridview.DataSource = tikPart.ToList(); gridview.DataBind();
我们可以不使用数据源来设置Gridview。设置gridview列,然后在代码背后将该结果绑定到网格视图。
@leppie将IQueryable添加为数据源时,无需在IQueryable上调用ToList()。
如果在调用DataBind方法之前尚未处理掉DataContext,则为冗余调用。
默认情况下,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上使用自动生成的列,以便将返回的对象中的每个属性转换为一列,或者可以与设计器一起编写这些列并在那里设置绑定规则。
我们可以使用LinqDataSource控件将IQueryable <>类型绑定到GridView。 http://johnsobrepena.blogspot.com/2010/01/data-bind-coolgridview-to-iqueryable.html