如何解决从列表中的 IQueryable 中删除项目
我的数据库中有 2 个表 Products
和 PremiumProducts
,用于 ASP Net 应用程序。
我通过简单的查询检索产品
IQueryable<Product> query = from p in myDataContext.Products select p;
我有一个 PremiumProducts
列表(其中包含 Product
的 ID)。我试图从上面的查询中删除 PremiumProducts
列表中的 ID,但不确定是否有简单的方法,或者我是否需要先将所有 PremiumProducts
转换为 Product
?我试过这个
List<PremiumProducts> premiumProducts;
query = from p in query where (premiumProducts.Contains(p.ID)) select p;
但这当然会带来各种铸造错误。
是否有一种简单的方法可以从上面的 PremiumProducts
中删除 query
或者我是否需要将 PremiumProducts
转换为 Product
,存储 ID 然后尝试删除带有这些 ID 的查询?
解决方法
而不是:
query = from p in query where (premiumProducts.Contains(p.ID)) select p;
我建议:
query = from p in query where (!premiumProducts.Select(z => z.ID).Contains(p.ID)) select p;
主要区别:
- 使用
!
(因为您想排除那些在premiumProducts
). - 使用
premiumProducts.Select(z => z.ID)
来 确保包含是针对ID
而不是对象(只是 避免您的铸造问题)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。