83

ユーザーに関する情報を含む 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; 
        }
4

7 に答える 7

127

データビューを使用できます。

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


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

于 2012-10-22T13:39:34.073 に答える
117

少なくとも .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 への参照 ( How )を忘れずに追加してください。

于 2012-10-22T13:38:58.867 に答える
15

これを使って:

.CopyToDataTable()

例:

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

DataTable _newDataTable = yurDateTable.Select(_sqlWhere, _sqlOrder).CopyToDataTable();
于 2014-03-13T10:53:57.813 に答える
10

DataTable実際には aよりも aを返したい場合がありますDataView。だからDataView私の場合は良くなかったし、それを望んでいる人はほとんどいないと思う. これが私がかつてやっていたことです

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

myDataTableこれは、DataTableをフィルタリングし、新しいものを返します。DataTable

誰かがそれが役に立つことを願っています

于 2018-05-03T23:30:06.810 に答える
9

VB.NET を使用しているすべてのユーザー向け (念のため)

Dim dv As DataView = yourDatatable.DefaultView

dv.RowFilter ="query" ' ex: "parentid = 0"
于 2015-03-21T03:37:49.943 に答える
5

このタスクには DataView を使用することをお勧めします。

この投稿で見つけることができる使用例:データビューでデータをフィルターする方法

于 2012-10-22T13:38:32.620 に答える
2

こんにちは、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>();
   }
于 2018-01-30T12:01:41.260 に答える