2016-05-10 6 views
0

Я пытаюсь проверить доступность имени пользователя из двух таблиц, как я могу это сделать. Пожалуйста, помогите.Проверка наличия имени пользователя из двух таблиц C#

  a = (from n in dbobj.stores 
       where n.st_UserName == storeuname 
       select n.st_id).Single(); 
      return true;   

Я пытаюсь проверить в то же время, как:

  a = (from n in dbobj.stores && dbobj.customer 
      where n.st_UserName == storeuname or n.cu_UserName == storeuname 
       select n.st_id).Single(); 
      return true;   

Помогите мне, если я делаю что-либо в неправильном направлении.

ответ

0

Single предполагает, что всегда будет возвращена одна запись. Согласно Microsoft:

Возвращает единственный элемент последовательности и генерирует исключение, если в последовательности не содержится ровно один элемент.

Поэтому лучше использовать Any, а затем адаптировать возвратное заявление

bool any = (from n in dbobj.stores 
      where n.st_UserName == storeuname 
      select n.st_id).Any(); 
return any; 

Во втором запросе вы, по-видимому, пытаясь объединить две таблицы. Вы не можете так сделать. Вместо того, чтобы выполнять тесты один за другим

bool any = (from n in dbobj.stores 
      where n.st_UserName == storeuname 
      select n.st_id).Any(); 
if (any) { 
    return true; 
} 

any = (from n in dbobj.customer 
     where n.cu_UserName == storeuname 
     select n.st_id).Any(); 
return any; 

Эта вторая таблица будет запрашиваться только если пользователь не найден в первой.

+0

Пожалуйста, вы можете сказать мне, как я могу проверить имя пользователя в двух таблицах базы данных – user3757908

+0

Это не дает ответа на вопрос. Кроме того, зачем использовать 'Count()', когда 'Any()' дает вам ответ «bool»? – DavidG

+0

Хорошая точка. Я заменил 'Count()' на 'Any()'. –

1

Ну вы не можете буквально проверить две таблицы одновременно, но вы можете проверить оба в одном запросе. Есть много способов сделать это - самый простой способ заключается в Union два запросов:

a = 
    (from n in dbobj.stores 
        where n.st_UserName == storeuname 
        select n.st_id) 
    .Union 
    (from n in dbobj.stores 
        where n.cu_UserName == storeuname 
        select n.st_id) 
    .Single() 
Смежные вопросы