Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ef中的if else语句以及MVC_C#_Entity Framework_Linq - Fatal编程技术网

C# Ef中的if else语句以及MVC

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()) {

我有三个字段要基于它们来过滤我的结果。 我使用了if-else语句,但它非常笨拙,基于我的字段,我不得不编写一些if-blocks语句。 有没有更简单的方法

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);
    }
}