如何解决include 中的 where 语句不过滤 选项 1选项 2选项 3
我正在尝试获取名称中包含“a”的项目的列表。我正在使用实体框架。我有 5 条记录带有“a”,但有 5 条记录没有“a”。 在返回的是所有项目。这意味着 include 语句有效但 where 语句无效。 我尝试了多种选择,但仍然无效。
选项 1
我认为这段代码是最“正确”的(即使没有工作)。 return _context.StockLists
.Where(x => x.CompanyId == id)
.Include(e => e.Stocks)
.Where(c => c.Stocks.Any(x => x.Name.Contains("a"))).ToList();
她不是错误代码。当我运行它时,程序加载了 10 只股票。这是不正确的,因为我在 where 中说我只想要名称中带有“a”的股票。他加载了 10 只股票,而这必须是 5 只。Output number of stocks
选项 2
我尝试过的另一个解决方案是: return (IEnumerable<StockList>)_context.StockLists.Where(c => c.Stocks.Any(i => i.Name.Contains("a")))
.Select(c => new
{
c,Stocks = c.Stocks.Where(i => i.Name.Contains("a"))
})
.ToList();
这里的错误代码是:
> System.InvalidCastException: 'Unable to cast object of type 'System.Collections.Generic.List`1[<>f__AnonymousType0`2[AandelenApplicatie.Data.Poco.StockList,System.Collections.Generic.IEnumerable`1[AandelenApplicatie.Data.Poco.Stock]]]' to type 'System.Collections.Generic.IEnumerable`1[AandelenApplicatie.Data.Poco.StockList]'.'
选项 3
我尝试过的第三个选项是: return _context.StockLists
.Include(b => b.Stocks.Where(p => p.Name.Contains("a")))
.ToList();
这里使我的应用程序崩溃并出现错误:
System.InvalidOperationException: 'Lambda expression used inside Include is not valid.'
我认为该声明有问题,但我找不到答案。 感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。