1
我有一個列表視圖,並從該選擇LINQ查詢在代碼隱藏結合它相關關鍵詞設置where子句和使用LinqDataSource的參數,如LINQ查詢
MyDataContext dcxt = new MyDataContext();
string x = "searchword"; // i get x from user
var query = from ak in dcxt.WordIndexes
where ak.Word == x
from a in ak.Keywords
where a.Comps.Approved &&
a.Comps.Active &&
a.Approved
orderby a.ETbm descending
select a;
ListView1.DataSource = query;
ListView1.DataBind();
我有WordIndexes -> Keywords
之間的一個一對多關係, 也是Comps -> Keyswords
之間的一對多。
現在我想使用linqdatasource,所以我可以讓linqdatasource處理分頁。但我不能設置這個linq查詢的where子句。
<asp:LinqDataSource ID="lds2" runat="server"
ContextTypeName="MyDataContext" EntityTypeName=""
OrderBy="" TableName="Keywords"
Where="">
</asp:LinqDataSource>
我試圖使用datapager(沒有linqdatasource)進行分頁,但如果結果持有很多項目,它非常緩慢。我之前使用linqdatasource進行了更簡單的查詢,但由於表之間的關係,這對我來說有點複雜,我不知道從哪裏開始構建where子句。任何幫助?
更新:
我結束了使用LinqDataSourceSelectEvent
與DataPager的建議一樣在回答
protected void linqDS_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
var query = from ak in dcxt.WordIndexes
where ak.Word == x
from a in ak.Keywords
where a.Comps.Approved &&
a.Comps.Active &&
a.Approved
orderby a.ETbm descending
select a;
e.Arguments.TotalRowCount = query.Count();
e.Result = query.Skip(DataPager1.StartRowIndex).Take(DataPager1.PageSize);
}