Jak mogę filtrować dane?
Używam DataTable z informacjami o użytkownikach i chcę przeszukać użytkownika lub listę użytkowników w tym DataTable. Próbuję ale nie działa: (
Oto Mój kod 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;
}
7 answers
Możesz użyć DataView.
DataView dv = new DataView(yourDatatable);
dv.RowFilter = "query"; // query example = "id = 10"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-22 13:39:34
Jeśli używasz co najmniej. NET 3.5, sugerowałbym użycie Linq-To-DataTable
zamiast tego, ponieważ jest o wiele bardziej czytelny i wydajny:
DataTable tblFiltered = table.AsEnumerable()
.Where(row => row.Field<String>("Nachname") == username
&& row.Field<String>("Ort") == location)
.OrderByDescending(row => row.Field<String>("Nachname"))
.CopyToDataTable();
Powyższy kod to tylko przykład, w rzeczywistości masz wiele innych dostępnych metod .
Pamiętaj, aby dodać using System.Linq;
i dla metody rozszerzenia AsEnumerable
odniesienie do System.Data.DataSetExtensions
dll (Jak ).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:24
Wyczyść:
list = null; // for testing
list = new DataTable(); // for testing
foreach (DataRow row in rows)
{
list.ImportRow(row);
}
Użycie:
.CopyToDataTable()
Przykład:
string _sqlWhere = "Nachname = 'test'";
string _sqlOrder = "Nachname DESC";
DataTable _newDataTable = yurDateTable.Select(_sqlWhere, _sqlOrder).CopyToDataTable();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-13 15:46:15
Dla każdego, kto pracuje w VB.NET (na wszelki wypadek)
Dim dv As DataView = yourDatatable.DefaultView
dv.RowFilter ="query" ' ex: "parentid = 0"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-11 15:01:13
Czasami chcesz zwrócić DataTable
niż DataView
. Więc a DataView
nie było dobre w moim przypadku i myślę, że kilka innych też by tego chciało. Oto co kiedyś robiłem
myDataTable.select("myquery").CopyToDataTable()
To filtruje myDataTable
który jest DataTable i zwraca Nowy DataTable
Mam nadzieję, że ktoś znajdzie coś przydatnego
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-13 08:29:33
Lepiej jest użyć DataView do tego zadania.
Przykład jego użycia znajdziesz w tym poście: Jak filtrować dane w dataview
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:54
Cześć możemy użyć metody Tolowera czasami nie jest to filtr.
EmployeeId = Session["EmployeeID"].ToString();
var rows = dtCrewList.AsEnumerable().Where
(row => row.Field<string>("EmployeeId").ToLower()== EmployeeId.ToLower());
if (rows.Any())
{
tblFiltered = rows.CopyToDataTable<DataRow>();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-30 12:41:53