DataTableから行を抽出して新しいDataTableを作成する

■使用例

var destTable = 
      DataTableHelper.Where(srcTable, row => (int)row["column1"] > 4);

■出力結果
DataTableWhere.png

■コード

/// <summary>
/// DataTableから行を抽出して新しいDataTableを作成する。
/// </summary>
/// <param name="source">対象DataTable</param>
/// <param name="predicate">フィルター条件</param>
/// <returns>フィルター後のDataTable</returns>
public static DataTable Where(DataTable source, Func<DataRow, bool> predicate)
{
  var rows = source.AsEnumerable().Where(predicate);
  if (rows.Count() > 0)
  {
    return rows.CopyToDataTable();
  }
  else
  {
    return source.Clone();
  }
}