在LINQ to SQL中返回结果集之前检查是否存在记录

时间:2010-01-24 13:39:40

标签: c# .net linq 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;
}

...我总是检查记录的数量以确定是否存在记录。必须有一种更“优雅”的方式来做这件事,而不必两次调用数据库。有办法吗?

2 个答案:

答案 0 :(得分:16)

有很多干净的方法来处理这个问题。如果您想要与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 :(得分:1)

Record record = data.Records.FirstOrDefault(q => q.Id == id);
return record;