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>or 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 回答