2017-01-25 3 views
0

Я пытаюсь получить строковое значение из базы данных SQL Server, я работаю над проектом 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 + ""); 
} 

и это то, что таблица

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 -how-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); 
} 

Я также удалил различные предметы, которые были в вашем примере, поскольку они не нужны как часть решения.

Другой вариант - следовать формату запроса, а затем вызывать 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! –

Смежные вопросы