eine Linq to SQL-Abfrage immer auf einer Gridview zu zeigen
-
02-07-2019 - |
Frage
Ich habe eine ziemlich komplizierte Linq-Abfrage, die ich nicht bekommen in eine LinqDataSsource für die Verwendung in einem Gridview erscheinen kann:
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();
Wie kann ich dies in einem Gridview? Vielen Dank!
Lösung
Sie können Setup Ihre Gridview ohne Datenquelle. Setup die Grid Spalten und in Code-Behind binden, die zur Folge hat, um die Rasteransicht.
Andere Tipps
gridview.DataSource = tikPart.ToList();
gridview.DataBind();
@leppie -. Es gibt keine Notwendigkeit, eine ToList () auf der IQueryable zu rufen, wenn sie als Datenquelle Anbringen
Sofern Ihr Datacontext hat nicht vor der DataBind-Methode angeordnet worden ToList genannt wird, ist ein redundanter Anruf.
In der Standardeinstellung ein Datacontext verwendet faul-Laden, so dass die Daten nur abgerufen aus der Datenbank ist, wenn die IQueryable Aufzählungs wird. ToList () führt eine Enumeration und macht den Anruf, so tut DataBind ().
So können Sie etwas tun können:
using(MyDataContext ctx = new MyDataContext(){
this.MyGridView.DataSource = from something in ctx.Somethings where something.SomeProperty == someValue select something;
this.MyGridView.DataBind();
}
Je nachdem, wie Ihre Entsorgung Ihres Datacontext determins was zu einer Datenquelle zu binden.
Sie können dann entweder verwenden Auto Spalten erzeugen auf dem Gridview, so dass jedes Objekt in Ihrem zurückgegebene Objekt in eine Säule eingeschaltet wird, oder Sie können die Spalten mit dem Designer schreiben und dort die verbindlichen Regeln einrichten.
Sie können IQueryable binden <> geben LinqDataSource-Steuerelement zu Gridview verwenden. http://johnsobrepena.blogspot.com/2010/ 01 / Daten-bind-coolgridview-to-iqueryable.html