2017-07-31 39 views
1

我有一个数据表,其名称为dt从数据库填充。 SQL命令是:从linq中选择单个值

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]

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

回答

2

R1变量是IEnumarable,这样你就可以通过应用指数获得的价​​值。您也可以使用First()ElementAt()

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

您不能在IEnumerable上使用索引。首先将它投射到一个列表将工作。 – Carra

+0

谢谢@Carra –

+0

'ElementAt()'也是可以的 – derape

4

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

例子:

MessageBox.Show(r1.First());