0

有没有办法把它收紧,这样身体里只有一条线?

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

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

谢谢。

4

5 回答 5

2

这样的事情怎么样?

private int _ProjectGuidToId (Guid guid)
{
    return _dbt.ProjectEntity.First(r => r.ProjectGUID == guid.ToString()).Id;
}
于 2012-10-12T22:15:25.063 回答
2

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

return _dbt.ProjectEntity.First( r => r.ProjectGUID == guid.ToString() ).Id;
于 2012-10-12T22:18:44.313 回答
1

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

但是,我不鼓励这样做。在我看来,一行不可读的代码比两行可读的代码更糟糕。

于 2012-10-12T22:19:16.573 回答
0

第一个将返回对象的类型,不需要强制转换(更多详细信息

只需执行以下操作:

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

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

于 2012-10-12T22:16:54.563 回答
-1

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

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

如果列表的长度无关紧要,请使用它:

return _dbt.ProjectEntity.First(r => r.ProjectGUID == guid.ToString()).Id;
于 2012-10-12T22:19:58.757 回答