[英]How I can filter a Datatable?
我使用帶有用戶信息的 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 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 )。
用它:
.CopyToDataTable()
例子:
string _sqlWhere = "Nachname = 'test'";
string _sqlOrder = "Nachname DESC";
DataTable _newDataTable = yurDateTable.Select(_sqlWhere, _sqlOrder).CopyToDataTable();
有時您實際上想要返回DataTable
而不是DataView
。 所以在我的情況下, DataView
並不好,我想很少有人會想要它。 這是我以前做的
myDataTable.select("myquery").CopyToDataTable()
這將過濾作為 DataTable 的myDataTable
並返回一個新的DataTable
希望有人會發現這很有用
對於在 VB.NET 中工作的任何人(以防萬一)
Dim dv As DataView = yourDatatable.DefaultView
dv.RowFilter ="query" ' ex: "parentid = 0"
最好使用 DataView 來完成此任務。
您可以在這篇文章中找到使用它的示例: 如何在數據視圖中過濾數據
嗨,我們可以使用 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>();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.