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。1 つの項目であるため、列挙型を返しません。

次の 2 つのオプションがあります。

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

この例では、一連の (列挙可能な) レポートではなく、1 つのレポートのみが返されます。

public IEnumerable<Report> GetReport(int reportId)
{
    var dbReport = dbContext.ReportsTbl.Where(w =>w.ID == reportId).Take(1);
    return dbReport;
}

この例では 1 つのレポートのみが返されますが、列挙可能なレポート内にラップされます。これは、1 つのレポートのセットと考えることができます。

于 2012-12-02T20:13:52.733 に答える