【问题标题】:Get All Except from SQL database using Entity Framework使用实体框架从 SQL 数据库中获取所有内容
【发布时间】:2013-01-18 21:23:09
【问题描述】:

我有一个这样的产品列表

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

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

我该怎么做?

【问题讨论】:

  • 能否展示创建相关产品的相关代码?

标签: c# sql-server linq entity-framework linq-to-entities


【解决方案1】:

如果在 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));

【讨论】:

    【解决方案2】:
                var query = from p in db.Products
                            where !(from a in associatedProducts.Products
                                    select a.Products)
                                    .Contains(p.Key)
                            select p;
    

    我没有测试查询,但它应该是这样的。

    你应该看看如何在 linq 中使用“not in”:
    How would you do a "not in" query with LINQ?

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-21
        • 1970-01-01
        • 1970-01-01
        • 2018-01-02
        相关资源
        最近更新 更多