DBからデータを取得するクラスがあります。
[Table(Name = "Ilanlar")]
public class Ilan
{
[Column(Name="ilan_id" ,IsPrimaryKey = true)]
public int M_ilan_id;
[Column(Name="refVerenUser_id")]
public int M_refVerenUser_id;
}
そして、私はデータをバインドしています。データは上記のクラスを介してdbから取得されます。
private void ItemsGet()
{
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = f_IlanlariGetir(CurrentPage);
objPds.AllowPaging = true;
objPds.PageSize = 3;
objPds.CurrentPageIndex = CurrentPage;
rptIlanlar.DataSource = objPds; //rptIlanlar = asp:Repeater
rptIlanlar.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
ItemsGet();
}
private System.Collections.IEnumerable f_IlanlariGetir(int p)
{
Context context = new Context(DAO.dbYaban.ConnectionString);
return context.GetTable<Ilan>();
}
結果はIEnumerableですが、DataSetのようなものが必要です。このエラーが発生します:
私はこのエラーについての良い説明を見つけました、それは次のとおりです:
グリッドが自動ページングを実行するには、基盤となるデータソースがICollectionインターフェイスをサポートしている必要があります。ICollectionには、Countプロパティを実装するためのクラスが必要です。ArrayListとDataViewはどちらもインターフェイスをサポートしているため、これらをDataSourcesとして使用できます。他のクラスはIEnumerableインターフェイスのみをサポートします。これにより、それらをデータソースとして使用できますが、ページングされたデータソースとしては使用できません。SqlDataReaderは、そのようなクラスの例です。参照
しかし、linqの結果を使用してリピーターをSQLテーブルにバインドする必要があります。私は何をすべきか?