2017-01-25 7 views
0

SQLサーバーデータベースから文字列値を取得しようとしていますが、C#プロジェクトで作業していて、LINQ to SQLを使用しています。 これはLinqを使用してデータベース列から値を取得するC#

using (AlHayatEntities entity = new AlHayatEntities()) 
{ 
    var query = from o in entity.users 
       where o.userName == "" + txtUsername.Text && o.password == "" + txtPassword.Text 
       select o.role; 
    MessageBox.Show(query + ""); 
} 

私のコードスニペットであり、これは、私は、メッセージが出て、「admin」を印刷したいが、それはないテーブルが

id | userName | password | role 
1  shareef 123  admin 

は何かということです。

+0

Do 'MessageBox.Show(query.First());' – Igor

+2

[c#LINQ:単一の結果を取得する方法](http://stackoverflow.com/questions/6015081/c-sharp-linq)の可能な複製-Wind-to-Retrieve-a-Single-Result) –

+1

'' '+ ''(どれも3つ)で何ができますか?それらを削除する、それらは必要ではありません。 – Igor

答えて

0

この場合、コレクションの結果はIQueryableになります。この列はIQueryableになります。

このようにコードを修正することができます。

using (AlHayatEntities entity = new AlHayatEntities()) 
{ 
    var result = (from o in entity.users 
       where o.userName == txtUsername.Text 
         && o.password == txtPassword.Text 
       select o.role).FirstOrDefault(); 
    MessageBox.Show(result); 
} 

解決策の一部として必要ではないため、例に含まれていたさまざまなアイテムも削除しました。

もう1つのオプションは、クエリの書式に従って、表示するときにFirstOrDefaultを呼び出すことです。

using (AlHayatEntities entity = new AlHayatEntities()) 
{ 
    var query = from o in entity.users 
       where o.userName == txtUsername.Text 
         && o.password == txtPassword.Text 
       select o.role; 
    MessageBox.Show(query.FirstOrDefault()); 
} 

以下のようにあなたも.First()を使用することもできますが、その呼び出しは、結果がエントリを持っていることが必要です。あなたがレコードを持っていない可能性がある場合は、それを使用したくないでしょう。

+0

それは私のために働く、ありがとう –

+0

再び、パスワードをプレーンテキストで保存しないでください。これがあなたのために働くとしても、全体的には貧弱な解決策です。 –

+0

私は@ ZachMの推奨を2番目にします! –

関連する問題