C# Ef中的if else语句以及MVC
我有三个字段要基于它们来过滤我的结果。 我使用了if-else语句,但它非常笨拙,基于我的字段,我不得不编写一些if-blocks语句。 有没有更简单的方法C# Ef中的if else语句以及MVC,c#,entity-framework,linq,C#,Entity Framework,Linq,我有三个字段要基于它们来过滤我的结果。 我使用了if-else语句,但它非常笨拙,基于我的字段,我不得不编写一些if-blocks语句。 有没有更简单的方法 public ActionResult Search(String title, int? category_id, string productCode) { IEnumerable<products> result; using (DBModels db = new DBModels()) {
public ActionResult Search(String title, int? category_id, string productCode)
{
IEnumerable<products> result;
using (DBModels db = new DBModels())
{
if (title != null && category_id == null && productCode == null)
{
result = db.products.Where(c => c.title.Contains(title))
.Include(x => x.media)
.Include(p => p.categories)
.ToList();
return View(result);
}
else if (category_id != null && title == null && productCode == null)
{
result = db.products.Where(c => c.category_id == category_id)
.Include(x => x.media)
.Include(p => p.categories)
.ToList();
return View(result);
}
else if (productCode != null && title == null && category_id == null)
{
result = db.products.Where(c => c.id.ToString().Contains(productCode))
.Include(x => x.media)
.Include(p => p.categories)
.ToList();
return View(result);
}
else if (productCode != null && title != null && category_id != null)
{
result = db.products.Where(c => c.title.Contains(title)
&& c.category_id == category_id
&& c.id.ToString().Contains(productCode))
.Include(x => x.media)
.Include(p => p.categories)
.ToList();
}
}
result = db.products.Where(c => c.title.Contains(title)
|| c.category_id == category_id
|| c.id.ToString().Contains(productCode))
.Include(x => x.media)
.Include(p => p.categories)
.ToList();
return View(result);
}
public ActionResult搜索(字符串标题、int?类别id、字符串产品代码)
{
可数结果;
使用(DBModels db=newdbmodels())
{
if(title!=null&&category\u id==null&&productCode==null)
{
result=db.products.Where(c=>c.title.Contains(title))
.包括(x=>x.media)
.包括(p=>p.类别)
.ToList();
返回视图(结果);
}
else if(category_id!=null&&title==null&&productCode==null)
{
result=db.products.Where(c=>c.category\u id==category\u id)
.包括(x=>x.media)
.包括(p=>p.类别)
.ToList();
返回视图(结果);
}
else if(productCode!=null&&title==null&&category\u id==null)
{
result=db.products.Where(c=>c.id.ToString().Contains(productCode))
.包括(x=>x.media)
.包括(p=>p.类别)
.ToList();
返回视图(结果);
}
else if(productCode!=null&&title!=null&&category\u id!=null)
{
result=db.products.Where(c=>c.title.Contains(title)
&&c.category_id==category_id
&&c.id.ToString()包含(productCode))
.包括(x=>x.media)
.包括(p=>p.类别)
.ToList();
}
}
result=db.products.Where(c=>c.title.Contains(title)
||c.category_id==category_id
||c.id.ToString()包含(productCode))
.包括(x=>x.media)
.包括(p=>p.类别)
.ToList();
返回视图(结果);
}
您可以使用
public ActionResult搜索(字符串标题、int?类别id、字符串产品代码)
{
可数结果;
使用(DBModels db=newdbmodels())
{
var query=db.products
.包括(x=>x.media)
.包括(p=>p.类别)
.AsQueryable();
如果(!string.IsNullOrWhiteSpace(title))
{
query=query.Where(c=>c.title.Contains(title));
}
如果(类别id!=null)
{
query=query.Where(c=>c.category\u id==category\u id);
}
如果(!string.IsNullOrWhiteSpace(productCode))
{
query=query.Where(c=>c.id.ToString().Contains(productCode));
}
结果=query.ToList();
返回视图(结果);
}
}
public ActionResult Search(string title, int? category_id, string productCode)
{
IEnumerable<products> result;
using (DBModels db = new DBModels())
{
var query = db.products
.Include(x => x.media)
.Include(p => p.categories)
.AsQueryable();
if (!string.IsNullOrWhiteSpace(title))
{
query = query.Where(c => c.title.Contains(title));
}
if ( category_id != null)
{
query = query.Where(c => c.category_id == category_id);
}
if (!string.IsNullOrWhiteSpace(productCode))
{
query = query.Where(c => c.id.ToString().Contains(productCode));
}
result = query.ToList();
return View(result);
}
}