繁体   English   中英

从列表中的 IQueryable 中删除项目

[英]Remove item from IQueryable from List

我的数据库ProductsPremiumProducts中有 2 个表用于 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;

但这当然会带来各种铸造错误。

有没有一种简单的方法可以从上面的query中删除PremiumProducts ,或者我是否需要将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;

主要区别:

  1. 使用! (因为你想排除那些在premiumProducts )。
  2. 使用premiumProducts.Select(z => z.ID)来确保包含是针对ID而不是 object (只是避免您的铸造问题)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM