使用where子句从数据表中获取特定值
本文关键字:获取 数据表 where 子句 使用 | 更新日期: 2023-09-27 18:06:59
我想从DataTable
中query
一个特定的值。
假设我有一个DataTable
,它包含两列:
- 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" ?
}
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());
}
您可以直接在数据表上使用linq,而不需要Rows
或Cast
。
var query = producten.AsEnumerable().Where(x => x.Field<string>("item_name") == test);
foreach (var st in query)
{
MessageBox.Show(st.Field<int>("id"));
}
我通常使用数据表的defaultview的Rowfilter属性,但我必须承认我自己从未做过LINQ,所以现在可能有更好的方法。。。