Проверьте наличие записи перед возвратом набора результатов в LINQ to 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;
}
... где я всегда проверяю количество записей, чтобы определить наличие записи. Должен быть более "элегантный" способ сделать это, не вызывая базу данных дважды. Есть ли способ?
Ответы
Ответ 1
Есть много чистых способов справиться с этим. Если вы хотите, чтобы первый 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);
Ответ 2
Record record = data.Records.FirstOrDefault(q => q.Id == id);
return record;