このクラスは、ページ付けなどのデータテーブルの一部を取得するために作成しました。すべてが正常に機能しますが、問題は、メソッドが1つの列でしかフィルタリングできないことです。これを、LINQを使用してアーカイブするためのアイデアはありません。フィルタリングするn列とn式を渡したいと思いました。
例:列:名前、式'jonh'列:都市、式'florida'
これが私のクラスです:
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();
}
}