基本上,我想知道是否可以使用 Entity Framework 作为示例,在提供的 id 与表中的任何 id 不匹配时从数据库表中检索所有记录,但如果有 id匹配然后只检索那些记录。
如果使用 if 语句或 ?: 表达式,显然可以做到这一点,如下例所示。
var dbDocuments = new List<tblSalesQuoteDocument>();
if (id < 0)
dbDocuments = dbContext.tblSalesQuoteDocuments.ToList();
else
dbDocuments = dbContext.tblSalesQuoteDocuments.Where(x => x.HeaderId == id).ToList();
但我觉得这很丑陋,因为如果您想要所有记录,您的 URL 基本上是 Documents/Index/-1 或任何小于 0 的值。
有没有更好的办法?
为什么我想要一个 ActionResult 是因为我在其中做了很多过滤和代码特定的东西。我可以使用两种方法,一种用于所有记录,另一种用于特定记录。
那么我应该按照上面的问题来做,还是只使用两种方法并将我所有的过滤和其他代码抽象到辅助方法中以减少代码重复?
最佳答案
您可以根据需要添加过滤器表达式。示例:
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();
// ...
}
关于c# - 是否可以使用所有记录或匹配 id 方法从数据库中检索记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40300843/