Development Tip

데이터 테이블을 필터링하려면 어떻게해야합니까?

yourdevel 2020. 11. 12. 20:26
반응형

데이터 테이블을 필터링하려면 어떻게해야합니까?


사용자 정보가 포함 된 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"


http://www.csharp-examples.net/dataview-rowfilter/


.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.DataSetExtensionsDLL ( 어떻게 ).


맑은:

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를 사용하는 것이 좋습니다.

Example of the using it you can find in this post: How to filter data in dataview


Hi we can use ToLower Method sometimes it is not filter.

EmployeeId = Session["EmployeeID"].ToString();
var rows = dtCrewList.AsEnumerable().Where
   (row => row.Field<string>("EmployeeId").ToLower()== EmployeeId.ToLower());

   if (rows.Any())
   {
        tblFiltered = rows.CopyToDataTable<DataRow>();
   }

Sometimes you actually want to return a DataTable than a DataView. So a DataView was not good in my case and I guess few others would want that too. Here is what I used to do

myDataTable.select("myquery").CopyToDataTable()

This will filter myDataTable which is a DataTable and return a new DataTable

Hope someone will find that is useful

참고URL : https://stackoverflow.com/questions/13012585/how-i-can-filter-a-datatable

반응형