3

我有以下代码:

    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。

4

2 回答 2

4

您需要更改方法签名以仅返回单个对象而不是集合:

public Report GetReport(int reportId)
{
    var dbReport = dbContext.ReportsTbl.First(w =>w.ID == reportId);
    return dbReport;
}

如果出于某种原因您确实想要一个仅包含您可以使用的第一个元素的集合,.Take(1)而不是First.

于 2012-12-02T20:12:05.967 回答
2

First将第一个元素作为 type 返回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;
}

这个例子将只返回一个报告,但它会被包裹在一个可枚举的内部。您可以将其视为一组只有一个报告。

于 2012-12-02T20:13:52.733 回答