Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check existence of a record before returning resultset in LINQ to SQL

I'm looking for a simple solution to replace my standardized junk way of validating whether a record exists before attempting to retrieve the data. Currently, whenever one of my methods are called, I do something to the effect of...

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

...where I always check the count of the records to determine the existence of a record. There has to be a more "elegant" way of doing this, without calling the database twice. Is there a way?

like image 289
George Johnston Avatar asked Jan 24 '10 13:01

George Johnston


2 Answers

There are a lot of clean ways to handle this. If you want the first Record corresponding to id you can say:

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

If you only want to know if such a Record exists:

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

If you want a count of how many such Record exists:

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

If you want an enumeration (IEnumerable<Record>) of all such Record:

return data.Records.Where(r => r.Id == id);
like image 195
jason Avatar answered Oct 16 '22 15:10

jason


Record record = data.Records.FirstOrDefault(q => q.Id == id);
return record;
like image 1
Mike Two Avatar answered Oct 16 '22 14:10

Mike Two