質問

非常に複雑な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をセットアップできます。 gridview列を設定し、コードビハインドでその結果をグリッドビューにバインドします。

他のヒント

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

@leppie-データソースとしてアタッチするときに、IQueryableでToList()を呼び出す必要はありません。

DataBindメソッドがToListと呼ばれる前にDataContextが破棄されていない場合、冗長な呼び出しになります。

デフォルトでは、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で自動生成された列を使用して、返されたオブジェクトのすべてのプロパティを列に変換するか、デザイナーで列を記述してバインドルールを設定できます。

IQueryable <!> lt; <!> gt;をバインドできます。 LinqDataSourceコントロールを使用してGridViewに入力します。 http://johnsobrepena.blogspot.com/2010/ 01 / data-bind-coolgridview-to-iqueryable.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top