1

queryから特定の値を取得したいDataTable

DataTable2つの列を含むがあるとしましょう:

  • ID
  • 項目名

今私がやりたいことは、mysqlでそれを行うようなものです:SELECT * FROM "DataTable" WHERE item_name = 'MyItemName'

そして、その 'item_name' に属する ID を取得します...

int blah;
while (MyReader.Read())
{
    blah = MyReader.GetInt32("id");
}

今:どうすればこれを行うことができますDataTableか?

私はスニペットを持っていますが、メッセージボックスに戻り値を表示できないようです:

string test = Item1txt.Text;

var query = producten.Rows.Cast<DataRow>().Where(x => x.Field<string>("item_name") == test);
foreach (var st in query)
{
    MessageBox.Show(st.ToString());
    // how can i show the id that belongs to "test" ?
}
4

3 に答える 3

3

queryになるので、IQueryable<DataRow>stなりますDataRow。これを試して:

foreach (var st in query)
{
    MessageBox.Show(st.Field<int>("id").ToString());
}

または、そのアイテムしかないことがわかっている場合はitem_name、本質的に同じことを行う代替バージョンを次に示しますが、おそらく少し理解しやすいでしょう:

var st = producten.Rows.Cast<DataRow>().FirstOrDefault(x => x.Field<string>("item_name") == test);
if(item != null)
{
    MessageBox.Show(st.Field<int>("id").ToString());
}
于 2013-04-02T15:40:12.413 に答える
2

Rowsまたはを必要とせずに、データテーブルでlinqを直接使用できますCast

var query = producten.AsEnumerable().Where(x => x.Field<string>("item_name") == test);
foreach (var st in query)
{
    MessageBox.Show(st.Field<int>("id"));
}
于 2013-04-02T15:49:43.403 に答える