优化代码到'返回'行?

时间:2012-10-12 22:13:13

标签: c# linq

有没有办法收紧它,以便身体只有一条线?

private int _ProjectGuidToId (Guid guid)
{
    ProjectEntity res = _dbt.ProjectEntity
                            .Where(r => r.ProjectGUID == guid.ToString())
                            .First();
    return res.Id;
}

换句话说,如何在一行代码中使用LINQ从数据库的1行返回1个值(Id)?

感谢。

5 个答案:

答案 0 :(得分:2)

这样的事情怎么样?

private int _ProjectGuidToId (Guid guid)
{
    return _dbt.ProjectEntity.First(r => r.ProjectGUID == guid.ToString()).Id;
}

答案 1 :(得分:2)

使用First的谓词子句可以消除where子句:

return _dbt.ProjectEntity.First( r => r.ProjectGUID == guid.ToString() ).Id;

答案 2 :(得分:1)

您只需将.Id添加到第一行的末尾并返回单行。

但是,我会劝阻这一点。在我看来,单个不可读的行比两个可读行更糟糕。

答案 3 :(得分:0)

第一个将返回对象的类型,不需要转换(More Details

只需这一行:

 return _dbt.ProjectEntity.Where(r => r.ProjectGUID == guid.ToString()).First().Id;

注意:如果不保证查询返回一个对象,则可能抛出InvalidOperationException!

答案 4 :(得分:-1)

如果要强制列表必须包含一个项目,请使用此项。如果列表包含多个项目可能引发错误:

return _dbt.ProjectEntity.Single(r => r.ProjectGUID == guid.ToString()).Id;

并使用此,如果无关紧要的话:

return _dbt.ProjectEntity.First(r => r.ProjectGUID == guid.ToString()).Id;