有没有办法收紧它,以便身体只有一条线?
private int _ProjectGuidToId (Guid guid)
{
ProjectEntity res = _dbt.ProjectEntity
.Where(r => r.ProjectGUID == guid.ToString())
.First();
return res.Id;
}
换句话说,如何在一行代码中使用LINQ从数据库的1行返回1个值(Id)?
感谢。
答案 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;