返回表中唯一的记录值

时间:2014-02-11 11:26:45

标签: c# linq entity-framework

ClientAccountAccess表只有一条记录,包含ID和GUID。 我想将GUID作为字符串返回。

private static string GetAccessCode()
{
    using (EPOSEntities db = new EPOSEntities())
    {
        string clientAccessCode = from e in db.ClientAccountAccesses
                                     where string.IsNullOrWhiteSpace(e.GUID)
                                     select e.GUID;

        return clientAccessCode;
    }
}

select抛出一个错误,说无法将Ienumerable转换为字符串,但我不想创建一个IEnumerable clientAccessCode,正如我所说,这个表中只有一条记录,我想返回GUID的值。 / p>

? 谢谢你的回复

1 个答案:

答案 0 :(得分:5)

如果不应有多个匹配结果,请使用FirstOrDefault()SingleOrDefault()

private static string GetAccessCode()
{
    using (EPOSEntities db = new EPOSEntities())
    {
        var clientAccessCodes = from e in db.ClientAccountAccesses
                                where string.IsNullOrWhiteSpace(e.GUID)
                                select e.GUID;

        return clientAccessCodes.FirstOrDefault();
    }
}

注意 - 查询结果的类型为IEnumerable<string>。您还可以使用lambda语法:

private static string GetAccessCode()
{
    using (EPOSEntities db = new EPOSEntities())
    {
        return db.ClientAccountAccesses
                 .Where(e => String.IsNullOrWhiteSpace(e.GUID))
                 .Select(e => e.GUID)
                 .FirstOrDefault();
    }
}