このクラスは、ページ作成のようなデータテーブルの一部を検索するために作成したものですが、すべて正常に機能しますが、メソッドは1つの列でフィルタリングできるという問題があります。 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();
}
}
COLUMNNAME、filterValueのプロパティを持つクラスを作成し、オペレータが、私はあなたのソリューションの仕事を考えて、おそらく最高の –
@bradですが、それは私のために動作しません。私が望むように、私は私の質問のポイントを逃したと思う...しかし、とにかくあなたのソリューションを使用して、 'AND' ont he where節を使用しています。可能。とにかくtkx +1 – rpmlins
@rpmlins、私はあなたのOR比較を行うのに役立つだろう 'PredicateBuilder'に関するいくつかの情報を追加しました。 –