Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to retrieve records from a database using an either all records or matching id method?

Basically I want to know if it is possible using as an example, Entity Framework, to retrieve all records from the DB table when the provided id doesn't match any of the id's in the table, but if there are id's that match then only retrieve those records.

It is possible to do obviously if you use an if statement or a ?: expression, as an example below.

var dbDocuments = new List<tblSalesQuoteDocument>();

    if (id < 0)
        dbDocuments = dbContext.tblSalesQuoteDocuments.ToList();
    else
        dbDocuments = dbContext.tblSalesQuoteDocuments.Where(x => x.HeaderId == id).ToList();

But I find this pretty ugly because if you want all records your URL is basically Documents/Index/-1 or any value less than 0.

Is there a better way?

Why I want one ActionResult is because I do a lot of filtering and code specific stuff in it. I could use two methods, 1 for all records, and another for specific records.

So should I do it as my question above or just use two methods and abstract all my filtering and other code away in Helper Methods to reduce code duplication?

like image 525
Neill Avatar asked Dec 14 '25 07:12

Neill


1 Answers

You could add your filter expression on demand. Example:

ActionResult MyAction(int? id = null)
{
    // ...

    IQueryable<QuoteDocuments> docs = dbContext.tblSalesQuoteDocuments;

    if (id != null)
    {
        docs = docs.Where(x => x.HeaderId == id.Value);
    }

    var list = docs.ToList();

    // ...
}
like image 118
Nico Avatar answered Dec 15 '25 20:12

Nico



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!