从 linq 中选择单个值

Posted

技术标签:

【中文标题】从 linq 中选择单个值【英文标题】:select single value from linq 【发布时间】:2018-01-06 17:44:00 【问题描述】:

我有一个名为 dt 的数据表,它从数据库中填充。 SQL 命令是:

SELECT s.keyName,s.value FROM setting as s

填充 dataTable 后,我想从填充的 dt 中选择一个值。所以我尝试做一些我在这里展示的 linq:

if (dtSetting.Rows.Count > 0)
  
      var r1 = (from r in dtSetting.AsEnumerable()
       where r.Field<string>("keyName") == "logoName"
       select r.Field<string>("value"));

       MessageBox.Show(r1.ToString());
  

但我看不到 s.value 的值,而 r1.show 表示

system.data.enumerableRowCollection`1[system.String]

如何实现此代码以获取特定列的实际值?

【问题讨论】:

【参考方案1】:

你的 r1 是一个 IEnumerable。您应该从中选择一个项目。

例子:

   MessageBox.Show(r1.First());

【讨论】:

【参考方案2】:

r1 变量是 IEnumarable,因此您可以通过应用 index 来获取值。您也可以使用First()ElementAt()

 if (r1.Count() > 0)
    MessageBox.Show(r1.ToList()[0].ToString());
    //MessageBox.Show(r1.First());
    //MessageBox.Show(r1.ElementAt(0));

【讨论】:

您不能在 IEnumerable 上使用索引。首先将其转换为 List 会起作用。 ElementAt() 也可以 谢谢@Carra 和你。我选择你的答案是因为你的答案更好。非常感谢您节省了我的时间。

以上是关于从 linq 中选择单个值的主要内容,如果未能解决你的问题,请参考以下文章

C# LINQ 从数组/列表中不包含值的位置选择

使用 LINQ 选择单个列表的所有唯一组合,不重复

使用 LINQ 选择单个列表的所有唯一组合,不重复

使用 LINQ 从数据集中选择行,其中 RowsID 的列表位于 List<T>

如何从多个可选选项中获取单个值?

如何从单个表中选择多个列值相同的行