ユーザーに関する情報を含むDataTableを使用し、このDataTableでユーザーまたはユーザーのリストを検索します。私はそれを試してみますが、動作しません:(
これが私のc#コードです。
public DataTable GetEntriesBySearch(string username,string location,DataTable table)
{
list = null;
list = table;
string expression;
string sortOrder;
expression = "Nachname = 'test'";
sortOrder = "nachname DESC";
DataRow[] rows = list.Select(expression, sortOrder);
list = null; // for testing
list = new DataTable(); // for testing
foreach (DataRow row in rows)
{
list.ImportRow(row);
}
return list;
}
DataViewを使用できます。
DataView dv = new DataView(yourDatatable);
dv.RowFilter = "query"; // query example = "id = 10"
少なくとも.NET 3.5を使用している場合は、はるかに読みやすく強力なため、代わりにLinq-To-DataTable
を使用することをお勧めします。
DataTable tblFiltered = table.AsEnumerable()
.Where(row => row.Field<String>("Nachname") == username
&& row.Field<String>("Ort") == location)
.OrderByDescending(row => row.Field<String>("Nachname"))
.CopyToDataTable();
上記のコードは単なる例であり、実際には 多くのメソッドが利用可能 があります。
using System.Linq;
を追加し、AsEnumerable
拡張メソッドにSystem.Data.DataSetExtensions
dllへの参照を追加することを忘れないでください( How )。
明確:
list = null; // for testing
list = new DataTable(); // for testing
foreach (DataRow row in rows)
{
list.ImportRow(row);
}
つかいます:
.CopyToDataTable()
例:
string _sqlWhere = "Nachname = 'test'";
string _sqlOrder = "Nachname DESC";
DataTable _newDataTable = yurDateTable.Select(_sqlWhere, _sqlOrder).CopyToDataTable();
VB.NETで働く人のために(念のため)
Dim dv As DataView = yourDatatable.DefaultView
dv.RowFilter ="query" ' ex: "parentid = 0"
このタスクにはDataViewを使用することをお勧めします。
この投稿で使用できる例: dataviewでデータをフィルターする方法
DataTable
よりもDataView
を実際に返したい場合があります。私の場合、DataView
は良くありませんでした。これが私が以前にしたことです
myDataTable.select("myquery").CopyToDataTable()
これにより、DataTableであるmyDataTable
がフィルタリングされ、新しいDataTable
が返されます。
誰かがそれが役に立つと思うことを願っています
こんにちは、ToLowerメソッドを使用できますが、フィルターではない場合があります。
EmployeeId = Session["EmployeeID"].ToString();
var rows = dtCrewList.AsEnumerable().Where
(row => row.Field<string>("EmployeeId").ToLower()== EmployeeId.ToLower());
if (rows.Any())
{
tblFiltered = rows.CopyToDataTable<DataRow>();
}