C# 将上下文中的多个结果追加到一个列表(结果)不起作用
我正在开发小型.net应用程序,我需要按其类型获取文章,可能有3种类型: 食物 喝 糖果 我想知道,如果我想在食物和饮料的相同列表文章中,如何将上下文的结果添加到另一个结果中,而不重置它 这是我目前的代码: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
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);
}