Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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# 将上下文中的多个结果追加到一个列表(结果)不起作用_C#_Entity Framework_Linq - Fatal编程技术网

C# 将上下文中的多个结果追加到一个列表(结果)不起作用

C# 将上下文中的多个结果追加到一个列表(结果)不起作用,c#,entity-framework,linq,C#,Entity Framework,Linq,我正在开发小型.net应用程序,我需要按其类型获取文章,可能有3种类型: 食物 喝 糖果 我想知道,如果我想在食物和饮料的相同列表文章中,如何将上下文的结果添加到另一个结果中,而不重置它 这是我目前的代码: public async Task<IEnumerable<Article>> GetArticlesByType(ArticleObject request) { var result = new Article[] { }.AsQueryable(); IQuer

我正在开发小型.net应用程序,我需要按其类型获取文章,可能有3种类型:

食物 喝 糖果 我想知道,如果我想在食物和饮料的相同列表文章中,如何将上下文的结果添加到另一个结果中,而不重置它

这是我目前的代码:

public async Task<IEnumerable<Article>> GetArticlesByType(ArticleObject request)
{
var result = new Article[] { }.AsQueryable();
IQueryable<ArticleDTO> query = null;

if (request.Food.HasValue && (bool)request.Food)
{
    // Return type of query is IQueryable<Article> 
    query = _context.Articles.Where(x => x.Active == true && x.ArticleType == ArticleType.Food).Select(x => new Article
    {
        Id = x.Id,
        ArticleName = x.ArticleName
    });
    // Here I just wanted if this condition is satisfied to add values to my result
    result.AsQueryable().Union(query);
}

if (request.Drink.HasValue && (bool)request.Drink)
{
    query = _context.Articles.Where(x => x.Active == true && x.ArticleType == ArticleType.Drink).Select(x => new Article
    {
        Id = x.Id,
        ArticleName = x.ArticleName
    });
    // Again if there are any values in query add them to existing result values
    result.AsQueryable().Union(query);
}

if (request.Candy.HasValue && (bool)request.Candy)
{
    // When its candy I want also articles from food category
    query = _context.Articles.Where(x => x.Active == true && x.ArticleType == ArticleType.Food || x.ArticleType==ArticleType.Candy).Select(x => new Article
    {
        Id = x.Id,
        ArticleName = x.ArticleName
    });
    // Again if there are values in query add them to existing result 
    result.AsQueryable().Union(query);
}
//At the end return result and all the values in case all conditions were satisfied
return await result.ToListAsync();
}

现在,我已经尝试向result变量添加值,但即使查询中有一些数据,结果始终是空的

查询正在返回IQueryable,因此我无法创建接口的任何内容的空列表,因为我无法对其进行初始化

谢谢各位 干杯

谢谢各位


干杯

谢谢您的帮助,请查看我的编辑。投票!
    public async Task<IEnumerable<Article>> GetArticlesByType(ArticleObject request)
{
    IQueryable<ArticleDTO> foodArticles= null;
    IQueryable<ArticleDTO> drinkArticles= null;
    IQueryable<ArticleDTO> candyArticles= null;

    if (request.Food.HasValue && (bool)request.Food)
    {
        foodArticles= _context.Articles.Where(x => x.Active == true && x.ArticleType == ArticleType.Food).Select(x => new Article
        {
            Id = x.Id,
            ArticleName = x.ArticleName
        });
    }

    if (request.Drink.HasValue && (bool)request.Drink)
    {
        drinkArticles= _context.Articles.Where(x => x.Active == true && x.ArticleType == ArticleType.Drink).Select(x => new Article
        {
            Id = x.Id,
            ArticleName = x.ArticleName
        });
    }

    if (request.Candy.HasValue && (bool)request.Candy)
    {
        // When its candy I want also articles from food category
        candyArticles= _context.Articles.Where(x => x.Active == true && x.ArticleType == ArticleType.Food || x.ArticleType==ArticleType.Candy).Select(x => new Article
        {
            Id = x.Id,
            ArticleName = x.ArticleName
        });
    }
    return await foodArticles.AsQueryable().Union(drinkArticles).AsQueryAble().Union(candyArticles);
}