想检查ClientAccessCode表中是否有记录,如果没有则返回false...
if (!CheckAccessCodeExists())
{
Console.WriteLine("Client Access code does not exist");
throw new ConfigurationErrorsException("Client Access code does not exist");
}
private static bool CheckAccessCodeExists()
{
using (EPOSEntities db = new EPOSEntities())
{
ClientAccountAccess clientAccess = db.ClientAccountAccesses
.OrderByDescending(x => x.Id)
.Take(1)
.Single();
if (clientAccess != null)
{
return true;
}
return false;
}
}
//这是一个标记序列,在lamba表达式中不包含任何元素,那么我怎么能只返回false呢?也许使用 .Any()?
谢谢
编辑 非常感谢帮助我现在标记答案的人,如果我有另一个问题
ClientAccountAccess clientAccess = db.ClientAccountAccesses
.OrderByDescending(x => x.Id)
.Take(1)
.Single();
if (clientAccess != null)
{
db.DeleteObject(clientAccess);
}
我怎样才能重构它以说出更简洁的东西
if (db.ClientAccountAccesses.Any())
{
db.DeleteObject(//what does in here do I have to use above code to get record to delete?);
}
最佳答案
问题是Single期望集合中至少 有一项,如果找不到 1 项,则抛出异常。如果您的收藏可能没有记录,那么您应该使用 SingleOrDefault - 这将返回您正在使用的类型的默认值,在您的情况下,这将返回 null
。
ClientAccountAccess clientAccess = db.ClientAccountAccesses
.OrderByDescending(x => x.Id)
.Take(1)
.SingleOrDefault();
if (clientAccess != null)
{
db.DeleteObject(clientAccess);
}
关于c# - 如果表中没有记录,如何返回false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21705128/