Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 使用lambda C应用过滤器(如果有效)#_C#_Linq_Lambda - Fatal编程技术网

C# 使用lambda C应用过滤器(如果有效)#

C# 使用lambda C应用过滤器(如果有效)#,c#,linq,lambda,C#,Linq,Lambda,我试图在.net Core 2.2应用程序中使用entity和lambda为Get()方法构建一个过滤器 我正在通过postman提交一些数据,并尝试根据过滤后的参数进行提取,在进行调试时,它们会按照应该的方式进行处理,但最终的结果是对象的完整列表,因为根本没有过滤器 我正在使用内存数据库,因为我还没有任何可用的数据库 我错过了什么 public List<Analysis> Get(Analysis filter) { #region Filter Validation

我试图在.net Core 2.2应用程序中使用entity和lambda为
Get()
方法构建一个过滤器

我正在通过postman提交一些数据,并尝试根据过滤后的参数进行提取,在进行调试时,它们会按照应该的方式进行处理,但最终的结果是对象的完整列表,因为根本没有过滤器

我正在使用内存数据库,因为我还没有任何可用的数据库

我错过了什么

public List<Analysis> Get(Analysis filter)
{
    #region Filter Validation

    IQueryable<Analysis> analysis = dbContext.Analysis;

    if (!string.IsNullOrEmpty(filter.BusinessLine))
        analysis.Where(a => a.BusinessLine == filter.BusinessLine);

    if (!string.IsNullOrEmpty(filter.Requisition))
        analysis.Where(a => a.Requisition == filter.Requisition);

    if (!string.IsNullOrEmpty(filter.Clue))
        analysis.Where(a => a.Clue == filter.Clue);

    if (filter.DateFrom.HasValue)
        analysis.Where(a => a.CreationDate >= filter.DateFrom);            

    if (filter.DateTo.HasValue)
        analysis.Where(a => a.CreationDate <= filter.DateTo);

    if (!string.IsNullOrEmpty(filter.Text))
    {
        analysis.Where(a => a.Requisition.Contains(filter.Text) ||
                        a.InsuranceClaimCity.Contains(filter.Text));
    }

    #endregion

    return analysis.ToList();
}
公共列表获取(分析过滤器)
{
#区域过滤器验证
IQueryable analysis=dbContext.analysis;
如果(!string.IsNullOrEmpty(filter.BusinessLine))
其中(a=>a.BusinessLine==filter.BusinessLine);
如果(!string.IsNullOrEmpty(filter.requision))
其中(a=>a.requision==filter.requision);
如果(!string.IsNullOrEmpty(filter.Clue))
其中(a=>a.Clue==filter.Clue);
if(filter.DateFrom.HasValue)
其中(a=>a.CreationDate>=filter.DateFrom);
if(filter.DateTo.HasValue)
analysis.Where(a=>a.CreationDate a.requision.Contains(filter.Text)||
a、 InsuranceClaimCity.Contains(filter.Text));
}
#端区
返回分析。ToList();
}

您应该将Where方法的结果再次存储在变量中。Where返回一个已更改的集合,而不是更改当前集合。

您应该将Where方法的结果再次存储在变量中。Where方法返回一个已更改的集合,而不是更改当前集合。

Where方法返回一个实现了
IEnumerable
的新实例,它不会更改原始集合。如果要继续使用相同的变量,则应使用赋值

var analysisList = analysis.ToList();

analysisList = analysisList.Where(a => a.BusinessLine == filter.BusinessLine);// make this assignment for all the rest of filtering.

Where方法返回一个实现
IEnumerable
的新实例,它不改变原始集合。如果要继续使用相同的变量,则应使用赋值

var analysisList = analysis.ToList();

analysisList = analysisList.Where(a => a.BusinessLine == filter.BusinessLine);// make this assignment for all the rest of filtering.

您忘记了作业
analysis=analysis.Where(…
您忘记了作业
analysis=analysis.Where(…