我有一个DataTable如下:
OptionName OptionValue
'A' 100
'B' 85
'C' 75
'D' 60
我需要使用OptionName中的Text设置标签'lblMark'
,其中Option值为85。
修改
我目前正在做的是我使用一个下拉列表,其数据源设置为上面的DataTable,我将所选值设置为我想要的值。这样我就会得到这个名字。
但是我的情况是我不想显示下拉列表
答案 0 :(得分:1)
使用linq很容易
lblMark.Text=dt.AsEnumerable().Where(dr=>Convert.ToInt32(dr["OptionValue"])==85).First()["OptionName "].ToString();
请注意,如果没有匹配项,您将获得例外。
更安全的代码:
List<DataRow> lst =dt.AsEnumerable().Where(dr=>Convert.ToInt32(dr["id"])==5).ToList();
if(lst.Count==1)
{
lblMark.Text = lst[0]["OptionName"].ToString();
}
或
var lst =dt.AsEnumerable().Where(dr=>Convert.ToInt32(dr["id"])==5).SingleOrDefault();
if(lst!=null)
{
lblMark.Text = lst[0]["OptionName"].ToString();
}
我不确定您对数据的可用性有多确定,但如果您获得的数据超过1,则在FirstOrDefault中,您将遇到异常。哦......好吧......