从DataTable返回存在X值的DataRow

时间:2015-02-04 12:12:05

标签: c# asp.net

我有一个DataTable如下:

OptionName  OptionValue

   'A'        100
   'B'        85
   'C'        75
   'D'        60

我需要使用OptionName中的Text设置标签'lblMark',其中Option值为85。

修改

我目前正在做的是我使用一个下拉列表,其数据源设置为上面的DataTable,我将所选值设置为我想要的值。这样我就会得到这个名字。

但是我的情况是我不想显示下拉列表

1 个答案:

答案 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中,您将遇到异常。哦......好吧......