是否可以使用所有记录或匹配id方法从数据库检索记录
本文关键字:记录 id 方法 检索 数据库 可以使 是否 | 更新日期: 2023-09-27 18:15:18
基本上我想知道是否有可能使用作为一个例子,实体框架,从DB表中检索所有记录时,提供的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();
// ...
}
docs = dbContext.tblSalesQuoteDocuments.Any(x => x.HeaderId == id)? dbContext.tblSalesQuoteDocuments.Where(x => x.HeaderId == id) : dbContext.tblSalesQuoteDocuments.ToList();
你应该使用
if(dbContext.tblSalesQuoteDocuments.Any(x => x.HeaderId == id)){
...
}