Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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# 仅从Sql获取asp.net MVC中EntityFramewotk中所需条件的记录_C#_Asp.net Mvc_Entity Framework_Ienumerable - Fatal编程技术网

C# 仅从Sql获取asp.net MVC中EntityFramewotk中所需条件的记录

C# 仅从Sql获取asp.net MVC中EntityFramewotk中所需条件的记录,c#,asp.net-mvc,entity-framework,ienumerable,C#,Asp.net Mvc,Entity Framework,Ienumerable,我对实体框架非常陌生。 目前,我有一个模型类: 型号: public class Search_Model { [Required(ErrorMessage="Gender")] public string Gender { get; set; } public string Age {get; set;} public string Religion { get; set; } public string Mothertongue { get;

我对实体框架非常陌生。 目前,我有一个模型类:

型号:

public class Search_Model
{

    [Required(ErrorMessage="Gender")]
    public string Gender { get; set; }

    public string Age {get; set;}

    public string Religion { get; set; }

    public string Mothertongue { get; set; }

    public IEnumerable<Search_Model> Searcg_Ie { get; set; }
}
public ActionResult PublicSearch(Search_Model mdl)
    {
        Search_Model srch = new Search_Model();
        srch.Searcg_Ie = new List<Search_Model> { mdl};
        var rtc = srch.Searcg_Ie.Select(z=>z).Where(s=>s!=null).ToList();
        return RedirectToAction("Index", "Home");
    }
那很好。但是,当我们不知道哪个属性将为null时,我将如何在运行时执行此操作,以及如何为SQL数据库中的get记录编写代码


我不想查找使用空模型属性的记录

您正在检查属性是否等于一个值。任何一个都可以匹配,但如果不匹配,则该值不应为null

return
(from x in dbcontext.table1
    where Age == null || x.age==Age
     && Gender == null || x.gender == Gender
    select new model{
     model properties here..
    }).ToList();
return (from x in dbcontext.table1
where (x.age == Age || x.gender == Gender) && (x.age != null && x.gender != null)
select new {/* properties */}).ToList();

您正在检查属性是否等于某个值。任何一个都可以匹配,但如果不匹配,则该值不应为null

return (from x in dbcontext.table1
where (x.age == Age || x.gender == Gender) && (x.age != null && x.gender != null)
select new {/* properties */}).ToList();

通过此查询可以得到预期的结果

var filteredData = dbContext.table1.Where(x =>!string.IsNullOrEmpty(gender) ? x.Gender == gender : true && !string.IsNullOrEmpty(age) ? x.Age == age : true && !string.IsNullOrEmpty        (religion) ? x.Religion == religion : true).ToList();

通过此查询可以得到预期的结果

var filteredData = dbContext.table1.Where(x =>!string.IsNullOrEmpty(gender) ? x.Gender == gender : true && !string.IsNullOrEmpty(age) ? x.Age == age : true && !string.IsNullOrEmpty        (religion) ? x.Religion == religion : true).ToList();
您可以根据需要链接任意多个Where子句,它们将被转换为ands。所以,如果您的条件满足,您将获得查询的引用并对其进行过滤。例如,在您的情况下是这样的:

var query = dbcontext.table1;

if(age != null)
    query = query.Where(m => m.Age == age);

if(gender != null)
    query = query.Where(m => m.Gender == gender);

return  query.Select(m => new model
            {
                model properties here..
            }).ToList()
您可以根据需要链接任意多个Where子句,它们将被转换为ands。所以,如果您的条件满足,您将获得查询的引用并对其进行过滤。例如,在您的情况下是这样的:

var query = dbcontext.table1;

if(age != null)
    query = query.Where(m => m.Age == age);

if(gender != null)
    query = query.Where(m => m.Gender == gender);

return  query.Select(m => new model
            {
                model properties here..
            }).ToList()

您可以使用反射来获取模型上的属性,检查它们是否为null。从那里,您可以构建where子句来排除空值。您可以使用反射来获取模型上的属性,检查它们是否为空。从那里,您可以构建where子句来排除空值。您是对的,但是如果
age==null
那么它将在age为null的位置查找记录,我希望实际上如果age为null,那么不要使用age属性查找,使用其他不为null的属性查找..如果您的搜索筛选器(age==null)那么x.age==age将不存在于最终查询中。你是对的,但是如果
age==null
那么它将查找age为null的记录,我想实际上如果age为null,那么不要使用age属性查找,使用其他不为null的属性查找..如果你的搜索筛选器(age==null)那么x.age==age将不存在于最终查询中。我不想使用null模型属性查找记录。使用not null查找记录。仅限模型属性。我不想使用null模型属性查找记录。请使用not null查找记录。仅限模型属性。@Rahul Chaudhari请尝试此操作,它肯定会解决您的问题。@Rahul Chaudhari您可以在他的查询中添加更多类似于&&运算符的属性。@Rahul Chaudhari请尝试此操作,它肯定会解决您的问题。@Rahul Chaudhari您可以在他的查询中添加更多类似于&&运算符的属性。