asp.net 如何过滤数据表?

h7appiyu  于 2023-11-20  发布在  .NET
关注(0)|答案(7)|浏览(147)

我使用一个数据表与信息有关的用户,我想搜索一个用户或用户列表在这个数据表。我尝试它,但不工作:(
下面是我的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; 
        }

字符串

o2gm4chl

o2gm4chl1#

您可以使用DataView。

DataView dv = new DataView(yourDatatable);
dv.RowFilter = "query"; // query example = "id = 10"

字符串
http://www.csharp-examples.net/dataview-rowfilter/

wnavrhmk

wnavrhmk2#

如果你至少使用.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();

字符串
上面的代码只是一个例子,实际上你有many more methods available
请记住添加using System.Linq;,并为AsEnumerable扩展方法添加对System.Data.DataSetExtensions dll(How)的引用。

xzlaal3s

xzlaal3s3#

使用它:

.CopyToDataTable()

字符串
举例说明:

string _sqlWhere = "Nachname = 'test'";
string _sqlOrder = "Nachname DESC";

DataTable _newDataTable = yurDataTable.Select(_sqlWhere, _sqlOrder).CopyToDataTable();

628mspwn

628mspwn4#

有时候你实际上想要返回一个DataTable,而不是一个DataView。所以在我的例子中,一个DataView并不好,我想很少有人也会这样做。下面是我过去的做法。

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

字符串
这将过滤作为DataTable的myDataTable并返回新的DataTable
希望有人会发现这是有用的

dhxwm5r4

dhxwm5r45#

对于任何使用VB.NET的人(以防万一)

Dim dv As DataView = yourDatatable.DefaultView

dv.RowFilter ="query" ' ex: "parentid = 0"

字符串

7nbnzgx9

7nbnzgx96#

最好使用DataView来完成此任务。
你可以在这篇文章中找到使用它的例子:How to filter data in dataview

tp5buhyn

tp5buhyn7#

嗨,我们可以使用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>();
   }

字符串

相关问题