2010-08-13 7 views
1

Я пытаюсь проверить наличие записи в таблице SQL в инструкции if, я пытался использовать .Count(), но теперь понимаю, что она не будет работать, поскольку она вернется общая сумма всех записей в таблице.Проверка записи в таблице

// If the current user does not exist in the Database, then add the user 
if (staffdb.Staffs.Single(s => s.Staffname == user).Count() == 0) 
{ 

} 

Я немного новичок, когда дело доходит до этого, но я сделал немного поиска в сети и не могу найти что-нибудь, чтобы пойти прочь.

+1

Пожалуйста, не помещайте такие вещи, как «с asp.net mvc 2 C# SQL LINQ» в заголовке. Все это относится к тегам, так как это просто для категоризации вашего вопроса. –

+0

Простите, что Джон, есть ли способ изменить название после публикации? – bEUY

ответ

2

Правильное решение:

if (!staffdb.Staffs.Any(s => s.Staffname == user)) 
{ 
    // ... 
} 

Это гарантирует, что база данных будет налюбоваться, как только он находит. Если вы используете .Where(), а затем .Count(), он потенциально пройдет через всю таблицу и получит более длинный список, чем необходимо.

+0

Фантастический! Работает для меня Timwi и благодарю вас за информацию о .Where() и .Count(), проходящую через всю таблицу, я не знал об этом. – bEUY

0
// If the current user does not exist in the Database, then add the user 
if (staffdb.Staffs.SingleOrDefault(s => s.Staffname == user) == null) 
{ 

} 
+0

Downvoted, потому что код неверен (он проверяет, есть ли вообще пользователь в db) и потому, что он очень неэффективен. – Timwi

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