0

次のコードの複数の where 条件により、最初の行のみが表示されます。

     public bill_transaction Getbill_transaction(int id)
    {
        bill_transaction bill_transaction = db.bill_transaction.Where(m => m.Cust_Id == id && m.Bill_Status == "P").FirstOrDefault();
        if (bill_transaction == null)
        {
            throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
        }

        return bill_transaction;
    }

この条件に一致する行をすべて表示したいのですが、

単一の条件でも、最初の行のみが表示され、すべての行を表示するにはどうすればよいですか。

4

1 に答える 1

0

を削除するだけです。FirstOrDefault次のチェックbill_transaction == nullが実行されるのもそのためです。そのチェックも削除したいようです。戻り値の型も だけではなく、またはbill_transactionである必要があります。この単純な新しいメソッドをすべて要約すると、次のようになります。IQueryable<bill_transaction>IEnumerable<bill_transaction>

public IQueryable<bill_transaction> Getbill_transactions(int id)
{
   var ts = db.bill_transaction.Where(m => m.Cust_Id == id && m.Bill_Status == "P");
    if (!ts.Any()) {
        throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
    }
    return ts;
}

トランザクションがない場合は、例外がスローされることに注意してください (この動作はユーザー次第です)。

于 2015-09-02T14:17:01.650 に答える