Проверьте существование записи прежде, чем возвратить набор результатов в LINQ к SQL

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

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

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

10
задан Peter Mortensen 14 March 2011 в 14:16
поделиться

2 ответа

Есть много чистых способов справиться с этим. Если вы хотите первую запись , соответствующих ID , вы можете сказать:

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

, если вы только хотите знать, существует ли такая запись :

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

Вы хотите подсчет того, сколько таких записи существует:

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

Если вы хотите перечисление ( IENumerable ) всех таких записи :

return data.Records.Where(r => r.Id == id);
16
ответ дан 3 December 2019 в 21:21
поделиться
Record record = data.Records.FirstOrDefault(q => q.Id == id);
return record;
1
ответ дан 3 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: