我已經使這個類檢索數據表的部分像分頁,一切工作正常,但問題是,該方法只能過濾一列,我沒有ideia hwo歸檔這使用LINQ。我想通過n列和n表達式進行過濾。LINQ篩選器Datatable by n列
例如: 列:姓名,表達 'jonh' 柱:城市,表達 '佛羅里達'
這裏是我的類:
public class Paging
{
public enum Operator
{
Equal,
Like
}
public static DataTable Page(DataTable dataTableToPage, int pageSize, int pageNumber, string columnToFilter, string expression, out int totalrecords, Operator Operator)
{
int skip = (pageNumber - 1) * pageSize;
IEnumerable<DataRow> query = null;
if (Operator == Operator.Equal)
{
query = (from dr in dataTableToPage.AsEnumerable()
where dr[columnToFilter].ToString() == expression
select dr);
}
else if(Operator == Operator.Like)
{
query = (from dr in dataTableToPage.AsEnumerable()
where dr[columnToFilter].ToString().IndexOf(expression, StringComparison.OrdinalIgnoreCase) >= 0
select dr);
}
var queryConverted = query.Skip(skip).Take(pageSize);
if (queryConverted.Count() > 0)
{
totalrecords = query.Count();
return queryConverted.CopyToDataTable();
}
totalrecords = 0;
return new DataTable();
}
}
創建與列名,filterValue屬性的類,和運營商可能是最好 –
@brad我認爲您的解決方案的工作,但它不爲我工作正如我想的那樣,我認爲我錯過了我的問題上的一點......但無論如何用你的解決方案,就像在where子句中使用'AND'一樣,如果我想用'OR'得到一個結果可能。但無論如何tkx +1 – rpmlins
@rpmlins,我已經添加了一些關於'PredicateBuilder'的信息,它可以幫助你做OR比較。 –