Проверьте наличие записи, прежде чем возвращать набор результатов в LINQ to SQL. - PullRequest
10 голосов
/ 24 января 2010

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

private Record DoSomething(int id)
{
   if(data.Records.Count(q=>q.Id==id) > 0)
   {
      return data.Records.First(q=>q.Id==id);
   }
   return null;
}

... где я всегда проверяю количество записей, чтобы определить наличие записи. Должен быть более «элегантный» способ сделать это, не вызывая базу данных дважды. Есть ли способ?

Ответы [ 2 ]

16 голосов
/ 24 января 2010

Есть много чистых способов справиться с этим. Если вы хотите, чтобы первый Record соответствовал id, вы можете сказать:

Record record = data.Records.FirstOrDefault(r => r.Id == id);
if(record != null) {
    // record exists
}
else {
    // record does not exist
}

Если вы хотите знать, существует ли такой Record:

return data.Records.Any(r => r.Id == id); // true if exists

Если вы хотите подсчитать, сколько таких Record существует:

return data.Records.Count(r => r.Id == id);

Если вы хотите перечисление (IEnumerable<Record>) всех таких Record:

return data.Records.Where(r => r.Id == id);
1 голос
/ 24 января 2010
Record record = data.Records.FirstOrDefault(q => q.Id == id);
return record;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...