我有一个数据集从我的数据库中拉出2列。 我需要根据“A列”同一行中的值,从我的数据库“Column B”中的第二列中选择一个值
'Column A' 'Column B'
1111 aaaa
1212 bbbb
1313 caca
etc etc
所以在这个例子中,我需要使用Column A值1212选择B列中的值,从而选择我可以存储在字符串中的bbbb。对于表中的变化值,我需要多次这样做。
到目前为止,这是我正在使用的内容:
sSql.Remove(0, sSql.Length);
sSql.Append("SELECT NAME_, VALUE_TEXT");
sSql.Append(" FROM PARAMETERS_");
sSql.Append(" WHERE PARAMETERS_.NAME_ = 'Captions.User_TxtBox1'");
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(((DataDynamics.ActiveReports.DataSources.OleDBDataSource) rpt.DataSource).ConnectionString.ToString());
System.Data.OleDb.OleDbCommand selectCmd = new System.Data.OleDb.OleDbCommand(sSql.ToString(), conn);
da.SelectCommand = selectCmd;
da.Fill(ds);
txtUser.Text = ds.Tables[0].Rows[0]["VALUE_TEXT"].ToString();
这样可行,但仅限一条记录。我希望能够在我的SQL语句中删除我的WHERE子句,并从整个表中选择我要查找的特定记录。我正在抓取一系列条目,其中PARAMETERS_.NAME_的值将等于Captions.Tool1,Captions.Tool2等,我将需要知道这些行的VALUE_TEXT是什么,所以我可以放置这些值在相应的文本框中。
答案 0 :(得分:2)
您可以使用LINQ to DataSet。按列A 值过滤行,从过滤行中选择 B列,并(可选)获取第一个结果:
var result = table.AsEnumerable()
.Where(r => r.Field<int>("Column A") == 1212)
.Select(r => r.Field<string>("Column B"))
.FirstOrDefault();