gpt4 book ai didi

c# - LINQ to Entities 中的 "NOT IN"子句

转载 作者:IT王子 更新时间:2023-10-29 03:52:15 25 4
gpt4 key购买 nike

无论如何,我是否可以创建一个 not in 子句,就像我在 Linq to Entities 中的 SQL Server 中那样?

最佳答案

如果您使用内存中的集合作为过滤器,最好使用 Contains() 的否定。请注意,如果列表太长,这可能会失败,在这种情况下,您将需要选择另一种策略(请参阅下文了解如何使用完全面向数据库的查询的策略)。

   var exceptionList = new List<string> { "exception1", "exception2" };

var query = myEntities.MyEntity
.Select(e => e.Name)
.Where(e => !exceptionList.Contains(e.Name));

如果您要基于另一个数据库查询进行排除,使用 Except 可能是更好的选择。 (这是 LINQ to Entities 中支持的 Set 扩展的 link)

   var exceptionList = myEntities.MyOtherEntity
.Select(e => e.Name);

var query = myEntities.MyEntity
.Select(e => e.Name)
.Except(exceptionList);

这假定一个复杂的实体,其中您根据另一个表的某些属性排除某些实体,并且想要未排除的实体的名称。如果您想要整个实体,则需要将异常构造为实体类的实例,以便它们满足默认的相等运算符(请参阅 docs )。

关于c# - LINQ to Entities 中的 "NOT IN"子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/432954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com