2011-12-31 18 views
2

ADO.NETを使用してDataTableを作成し、DataListをバインドして動作させています。しかし、私は、以下のようにデータテーブルからのLINQを使用してのみ10レコードを抽出しようとすると、私のコードはエラーを与える:Linatable操作とデータテーブル

var xx=dt.asEnumerable().take(10).tolist(); 
dglist.datasource=xx; 
dglist.databind(); 

<asp:DataList ID="dglist" runat="server" 
    RepeatColumns="4" RepeatDirection="Horizontal" 
    RepeatLayout="Table" CellPadding="1"> 
    <ItemTemplate> 
     <div> 
      <asp:Image runat="server" id="Image1" 
       src='<%# Eval("photos") %>' BorderWidth="0" 
       alt="" style="width:300px;height:300px;display:block;"/> 
     </div> 
    </ItemTemplate> 
</asp:DataList> 

私のDataTableには、「写真」と呼ばれる1列があります。 DataListにバインドするとエラーが発生します。 Linqを使用してDataTableから10レコードを抽出し、10レコードでDataListをバインドする方法については、私にご案内ください。

私は別の質問があります。

datatable.asEnumerable()の意味とは何ですか?それはasEnumerable()によってDataTableを変換するようですが、何に?

+0

それは例外またはあなたが得たメッセージは何コレクション(すなわち、IEnumerableを) – BlackBear

+1

にデータベースを変換し、あなたの最後の質問については? –

+0

「写真」と呼ばれる列が見つかりません –

答えて

1

DataTableは、が機能するように、カラム名へのデータバインディングをサポートする方法であるIListSourceインターフェイスを実装しています。しかし、DataTableAsEnumerable()を呼び出すと、DataRowオブジェクトにはphotosという名前のプロパティがないため、例外が発生するのはIEnumerable<DataRow>です。

var xx = dt.AsEnumerable().Take(10).ToList(); 
dglist.DataSource = xx; 
dglist.DataBind(); 

<asp:DataList ID="dglist" runat="server" 
    ... 
      <asp:Image runat="server" id="Image1" 
       src='<%# Eval("[photos]") %>' BorderWidth="0" 
       alt="" style="width:300px;height:300px;display:block;"/> 
    ... 
</asp:DataList> 

それとも、AsDataView()拡張メソッドを使用します。しかし、あなたは、あなたが列名を使用してevalの中でインデクサーを使用する場合はそれを動作させることができます。 OfType<object>()は、LINQをサポートするために非汎用コレクションを汎用コレクションにする必要があります。この場合は、あなたのEval方法でインデクサーを使用する必要はありません。

var xx = dt.AsDataView().OfType<object>().Take(10).ToList(); 
dglist.DataSource = xx; 
dglist.DataBind(); 

<asp:DataList ID="dglist" runat="server" 
    .... 
      <asp:Image runat="server" id="Image1" 
       src='<%# Eval("photos") %>' BorderWidth="0" 
       alt="" style="width:300px;height:300px;display:block;"/> 
    .... 
</asp:DataList> 
+0

ありがとう私はしようとすると、uに戻ってきます。明けましておめでとうございます。 –

関連する問題