我正在研究ASP.NET MVC3应用程序。我想在服务中创建一个方法,该方法将仅返回从我调用该方法的位置提供的具有ID的实体。

在名为DocumentService的服务中,我编写了以下简单方法:

public Documents GetDocById(long id)
{
    return DocumentsRepository.All().Where(d => d.Id == id);
}


因为我只需要一个实体,所以我决定将方法的返回类型设置为称为Documents的实体的类型。我收到此代码的错误是:

Cannot implicitly convert type "System.Linq.IQueryable<DataAccess.Documents> to DataAccess.Documents.

这是合乎逻辑的。但是考虑如何将其转换为想要的类型时,我发现自己遇到了问题。例如,我可以将方法的返回类型设为List<Documents>,然后在return语句的末尾添加ToList()。但是我不希望有一个列表,我希望只有一个记录而不是记录列表。

那么有没有一种方法,如果有的话,我怎么能只返回一个实体,而不是返回带有一个项目的列表,这是我现在能想到的?

最佳答案

return DocumentsRepository.All().SingleOrDefault(d => d.Id == id);


要么

return DocumentsRepository.All().FirstOrDefault(d => d.Id == id);


如果有多个具有相同ID的实体。

10-08 08:32
查看更多