11

我有一个这样的产品列表

var r = db.Products.Where(x => x.Sites
                                .Where(z => z.Key == associatedProducts.Key)
                                .Any()
                  ).ToList()

有一个名为 Products 的实体,我想从 products 中获取所有元素,除了那些存在于 associatedProducts.Products 中的元素

我怎样才能做到这一点 ?

4

3 回答 3

22

如果在 previos 查询中使用 EF 获取关联产品列表,则以下查询有效。

var temp = db.Products.ToList().Except(associatedProducts).ToList();

否则,如果associatedProducts是一个尚未使用 EF 获取的列表(假设Key是一个整数);

List<int> tempIdList = associatedProducts.Select(q => q.Key ).ToList();
var temp = db.Products.Where(q => !tempIdList.Contains(q.Key));
于 2013-02-04T08:07:07.573 回答
0
            var query = from p in db.Products
                        where !(from a in associatedProducts.Products
                                select a.Products)
                                .Contains(p.Key)
                        select p;

我没有测试查询,但它应该看起来像这样。

您应该看看如何在 linq 中使用“not in”:
如何使用 LINQ 进行“not in”查询?

于 2013-02-04T07:58:13.850 回答
-4

您可以加载要排除的产品列表,然后.Exclude()从所有产品列表中加载。

于 2013-02-04T07:46:23.307 回答