我有以下代码:
public IEnumerable<Report> GetReport(int reportId)
{
var dbReport = dbContext.ReportsTbl.Where(w =>w.ID == reportId);
return dbReport;
}
我喜欢做什么,虽然我们得到第一个
如果我这样做:
public IEnumerable<Report> GetReport(int reportId)
{
var dbReport = dbContext.ReportsTbl.First(w =>w.ID == reportId);
return dbReport;
}
如何让它做First()。它抱怨它是IEnumerable。
答案 0 :(得分:4)
您需要更改方法签名以仅返回单个对象而不是集合:
public Report GetReport(int reportId)
{
var dbReport = dbContext.ReportsTbl.First(w =>w.ID == reportId);
return dbReport;
}
如果出于某种原因,您确实想要一个只包含第一个元素的集合,那么您可以使用.Take(1)
而不是First
。
答案 1 :(得分:2)
First
返回第一个元素Report
。由于它只有一个项目,因此不会返回可枚举项。
您有两种选择:
public Report GetReport(int reportId)
{
var dbReport = dbContext.ReportsTbl.First(w =>w.ID == reportId);
return dbReport;
}
此示例仅返回一个报告,而不是一堆(可枚举的)报告。
public IEnumerable<Report> GetReport(int reportId)
{
var dbReport = dbContext.ReportsTbl.Where(w =>w.ID == reportId).Take(1);
return dbReport;
}
此示例仅返回一个报告,但它将包含在可枚举内。您可以将此视为一组报告。