2017-03-16 5 views
-1

LINQクエリを1つのセル(データテーブルは1つの行と1つの列しか持たない)でDataTableを `String 'に変換します。1つのセルのみを持つデータテーブルを文字列に変換する

DataTable like this 
| Name | 
----------- 
| Alice | 

これを行う方法が既にある場合は素晴らしいでしょう。ありがとう

+2

私はLINQの者の権利を考えていませんここで答えてください。 DataTableに少なくとも1つの行と1つの列があることが確かであれば、 'dt.Rows [0] [0] .ToString()'がそれを取得します。この特定のクエリが1つの値しか返さない場合は、DataTableを設定する代わりにDbCommandでExecuteScalar()を使用することを検討してください。 – KeithS

+2

Linqはここに間違いなく間違っています。ExecuteScalarは1つの値だけを取得するように設計されており、 '.ToString()'はオブジェクトを文字列に変換します。すでにデータテーブルがあり、スカラーに変更できない場合は、最初の(唯一の)行の最初の(唯一の)列に 'Rows [0] [0]'にアクセスし、それから文字列を取得します。 – Andrew

答えて

2

なぜLINQですか?

string firstName = table.Rows[0].Field<string>("Name"); // or Field<string>(0) 

それはLINQでなければならない場合:

string firstName = table.AsEnumerable().First().Field<string>("Name"); 

あなただけの方が良いDataTableを使用してはならない、データベースから一つのフィールドを選択した場合:

using(var con = new SqlConnection("connectring")) 
using(var cmd = new SqlCommand("SELECT Name FROM Table WHERE Id = @Id", con)) 
{ 
    cmd.Parameters.Add("@Id", SqlDbType.Int).Value = 1234; 
    con.Open(); 
    string name = (string) cmd.ExecuteScalar(); 
} 
関連する問題