2017-07-31 24 views
1

私はdtと呼ばれるデータテーブルをデータベースから作成しました。 SQLコマンドは次のとおりです。linqから単一の値を選択

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

私は満たされDTから単一の値を選択するのdataTableを記入した後。だから私はここに私が示すいくつかの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

ありがとうございます@カーラ –

+0

'ElementAt()'も可能です – derape

4

r1は、IEnumerable <文字列>です。そこから項目を選択する必要があります。

例:

MessageBox.Show(r1.First()); 
関連する問題