IEnumerable返回第一

时间:2012-12-02 20:11:05

标签: c# linq

我有以下代码:

    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。

2 个答案:

答案 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;
}

此示例仅返回一个报告,但它将包含在可枚举内。您可以将此视为一组报告。