c# - 如果表中没有记录,如何返回false

标签 c# asp.net linq asp.net-mvc-3

想检查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/

相关文章:

c# - 如何在C#中使用SignalR向特定用户发送数据?

c# - 必填字段验证器停止图像按钮 onclick?

C# - 在运行时将文件作为资源添加到我的 Exe

asp.net - 这是一个 Web 应用程序漏洞吗?

c# - LINQ 检查一个列表是否包含另一个列表中的任何项目 mysql 语法错误

c# - 将 LINQ 'GroupBy' 运算符(operator)键排序为自定义顺序

C# 反射 : What is the difference between FieldInfo. SetValue() 和 FieldInfo.SetValueDirect()?

c# - 更改 ASP.NET/C# 中的 MenuItem 文本

c# - 使用 linq 为新列表赋值

c# - ASP MVC 4 MySQL,处理事务错误时遇到问题