-3

ここに画像の説明を入力セル値で行インデックスを学習したい。セル値「E003」を知っています。行がセル値「E003」を含む行インデックスを知るにはどうすればよいですか? 11ではなく7が必要です。

var table =TableAdapter.GetData();
var resultRow = table.Rows["I need row index. But I know just cell value"]; 
4

2 に答える 2

0

TableAdapter の概要に基づいて 、このようにクエリしたい基になる DataTable を取得できますvar table = TableAdapter.GetData()

指定された値で DataTable を検索して、行のインデックスを見つけます

以下の行は、その行の主キーを介して検索することにより、特定の行のインデックスを見つける方法を示しています。最初に DataTable から行のコレクションを取得し、メソッド Find() を使用して、指定された値で行を検索できます。

DataRowCollection rowCol = GetDataTable().Rows; 
rowCol.Dump("Content for RowCollection: ");
// find row by value of primary key
// for it to work Emp_Code as to be set as primary key column
DataRow foundRow = rowCol.Find("E003"); 

int indexOfRow = rowCol.IndexOf(foundRow);
indexOfRow.Dump("zero based RowIndex is: ");

基になるデータはスクリーンショットに似ています

private DataTable GetDataTable()
{
   DataTable table = new DataTable("NameIsOptional");
   table.Columns.Add(new DataColumn("Emp_Id", typeof(int)));
   table.Columns.Add(new DataColumn("Emp_Code", typeof(string)));
   table.Columns.Add(new DataColumn("L_Name", typeof(string)));
   // set Column 'Emp_Code' as primary key column
   table.PrimaryKey = new DataColumn[] {table.Columns["Emp_Code"]};

   table.Rows.Add(1, "E001", "dave");
   table.Rows.Add(2, "E002", "mandle");
   table.Rows.Add(3, "E007", "sarana");
   table.Rows.Add(4, "E004", "poyekar");
   table.Rows.Add(5, "E005", "suryawanshi");
   table.Rows.Add(9, "E006", "survey");
   table.Rows.Add(11, "E003", "singh");

   return table;
}

列についてはほとんど言わなかったのでEmp_Code、データテーブルの主キーとして使用できると思います。

linqpad デモ プログラムのスクリーンショット

以下に、linqpad で実行された上記のコードを示します。

ここに画像の説明を入力

主キーとして使用できない場合は、「C# で DataTable の値を見つけるにはどうすれEmp_Codeばよいですか?」という質問で必要な情報を見つけることができます。

于 2013-07-08T13:48:44.670 に答える
-1

そんな解決策を今日見つけました。

            var table = TableAdapter.GetData().Select(s => new { s.Index })
                                  .AsEnumerable()
                                  .Select((s, counter) => new
                                  {
                                      s.Index,
                                      counter = counter + 1

                                  });

            foreach (var item in table)
            {
                if (item.Index == Emp_ID)
                {                        
                    //do something

                    break;
                }
            }
于 2013-07-11T12:03:44.870 に答える