首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

确定IEnumerable <T>是否包含另一个IEnumberable <T>的任何对象

在这个问题中,我们要确定一个泛型集合 IEnumerable<T> 是否包含另一个 IEnumerable<T> 的任何对象。为了解决这个问题,我们可以使用 LINQ 的 Any()Intersect() 方法。

首先,我们需要确保已经引入了 System.Linq 命名空间。

代码语言:csharp
复制
using System.Linq;

接下来,我们可以编写一个扩展方法来解决这个问题:

代码语言:csharp
复制
public static bool ContainsAny<T>(this IEnumerable<T> source, IEnumerable<T> other)
{
    return other.Any(source.Contains);
}

现在,我们可以使用这个扩展方法来检查一个 IEnumerable<T> 是否包含另一个 IEnumerable<T> 的任何对象:

代码语言:csharp
复制
IEnumerable<int> source = new[] { 1, 2, 3, 4, 5 };
IEnumerable<int> other = new[] { 3, 6, 9 };

bool containsAny = source.ContainsAny(other);

在这个例子中,source 包含 other 的对象,所以 containsAny 的值为 true

这个方法的时间复杂度为 O(n),其中 n 是 other 集合的元素数量。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

最全数据结构详述: List VS IEnumerable VS IQueryable VS ICollection VS IDictionary

Collection(集合) Collection是数据记录集合, 编写代码过程中,常常需要合适容器保存临时数据,方便修改和查找,如何选取合适数据容器,关键在于将执行数据操作以及数据记录是否大量。...ArrayList 没有固定长度,容量可动态增加,可应用于开发人员无法确定数组元素个数等场景,当然这种情况下,在定义结构体时候会非常耗时。 2....ArrayList 不是强类型,ArrayList中不同元素类型可以不相同,并且需要在运行时根据实际输入来确定元素类型。因此在运行时消耗内存较多。 3....IEnumerable常用于遍历集合元素,但是无法修改(删除或添加)数据,使用IEnumberable 会从服务器端将所有数据拷贝到客户端,并进行一定过滤,如果服务器端有大量数据会造成内存负载超重。...ICollection 继承了IEnumberable,但是IEnumberable是基于索引,ICollection不基于索引。 ?

1.9K80
  • Linq基础知识之延迟执行

    IEnumerable,所以只有在使用foreach遍历时候,查询方法才能被真正执行.请参考C# 通过IEnumberable接口和IEnumerator接口实现自定义集合类型foreach功能...输出结果一目了然,当创建完查询之后添加元素也包含到了结果集中,说明查询并没有立即执行,而是在使用foreach遍历之后才执行,这种特性就是Linq延迟执行....不止Where查询操作符是这样,其他只要返回IEnumerable对象都有延迟执行特性....重复执行 使用导致延迟执行查询操作符进行查询操作,并且两次或者两次以上使用foreach,会导致查询重复执行,重复执行在以下两种情况下,绝对是不好: 1、当需要在一个确定点保存查询结果时,因为延迟执行并不会在创建查询之后马上得到查询结果集...需要注意是,如果在上面的查询后面加上一个转换运算符如ToList,那么query会被立即执行,这样,单个list就会取代上面的整个对象模型。

    1.8K100

    迭代器模式

    因为需要接口编程,所以,在迭代器模式中,抽象了2个接口,一个是集合接口,另一个是迭代器接口,具体角色如下: 1.抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象接口...根据定义,Microsoft .NET Framework集合是至少实现IEnumerable(或非泛型IEnumerable接口)类。...此接口至关重要,因为至少必须实现IEnumerable方法,才支持迭代集合。IEnumerable和IEnumerator接口类图: ?....NET Framework中迭代器模式应用 C#foreach语句其实就是迭代器模式。任何可以使用foreach进行遍历对象,它一定是实现了IEnumerable接口。...任何实现了IEnumerable接口对象集合都可以使用foreach遍历。

    64730

    Entity Framework快速入门--IQueryable与IEnumberable区别

    IEnumerable接口 公开枚举器,该枚举器支持在指定类型集合上进行简单迭代。...也就是说:实现了此接口object,就可以直接使用foreach遍历此object; IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable...>(3); //注意这个AsEnumerable()在分页查询之前,先将其转换成IEnumerable类型 IEnumerable...第一种:直接返回 IQueryable类型查询,如下图所示: 第二种:在用分页查询之前先将其转换成 IEnumerable实际执行sql如下图所示: 总结 IQueryable接口与IEnumberable...接口区别:  IEnumerable 泛型类在调用自己SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable 是将Skip ,take 这些方法表达式翻译成

    43850

    Core官方DI解析(2)-ServiceProvider

    /ServiceProvide ServiceProvider是我们用来获取服务实例对象类型,它也是一个特别简单类型,因为这个类型本身并没有做什么,其实以一种代理模式,其核心功能全部都在IServiceProviderEngine...**是为了让**IServiceProviderEngine**进行调用验证 然后通过\*\*ServiceProviderMode\*\*这个枚举进行判断实例化具体引擎对象,四个枚举对应四种引擎对象...\*\*集合,在内部使用\*\*IEnumerable\*\*参数获取服务实例是一个特殊处理,这个在后面就可以看到 \*\*CreateScope()\*\*方法是一个获取子类容器,获取方式从下面代码看也是通过服务注册方式获取服务实例...(T)); // 获取指定注册类型所有服务实例 public static IEnumerable GetServices(this IServiceProvider...// 制造一个serviceType类型IEnumberable集合,serviceTypele类型作为当前集合泛型参数 var genericEnumerable

    65440

    IQueryable与IEnumberable区别

    转自 http://www.cnblogs.com/fly_dragon/archive/2011/02/21/1959933.html IEnumerable接口 公开枚举器,该枚举器支持在指定类型集合上进行简单迭代...也就是说:实现了此接口object,就可以直接使用foreach遍历此object; IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable...>(3); //注意这个AsEnumerable()在分页查询之前,先将其转换成IEnumerable类型 IEnumerable...第一种:直接返回 IQueryable类型查询,如下图所示: ? 第二种:在用分页查询之前先将其转换成 IEnumerable实际执行sql如下图所示: ?...总结 IQueryable接口与IEnumberable接口区别: IEnumerable 泛型类在调用自己SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable

    53910

    Core官方DI解析(2)-ServiceProvider

    ServiceProvider ServiceProvider是我们用来获取服务实例对象类型,它也是一个特别简单类型,因为这个类型本身并没有做什么,其实以一种代理模式,其核心功能全部都在IServiceProviderEngine...接口 ​ GetServices()方法是获取当前类型所有服务实例,可以看到这个方法无非是调用GetRequiredService(),只不过参数是一个IEnumerable集合,在内部使用IEnumerable...(T)); // 获取指定注册类型所有服务实例 public static IEnumerable GetServices(this IServiceProvider...provider) => provider.GetRequiredService>(); // 同上, public static.../ 制造一个serviceType类型IEnumberable集合,serviceTypele类型作为当前集合泛型参数 var genericEnumerable

    58520

    设计一个 .NET 可用弱引用集合(可用来做缓存池使用)

    我们有弱引用 WeakReference 可以用来保存可被垃圾回收对象,也有可以保存键值对 ConditionalWeakTable。 我们经常会考虑制作缓存池。...所以我们考虑直接使用 WeakReference 来实现弱引用集合。 自己维护一个列表 List>,对外开放 API 只能访问到其中未被垃圾回收到对象。...IEnumerable IEnumerable 里面只有两个方法,看起来少多了,那么我们能用吗?...使用者随时可能使用其中一个扩展方法得到了其中一个状态,随后使用另一个扩展方法得知其第二个状态,例如: 1 2 3 // 判断集合中是否存在 IFoo 类型以及是否存在 IBar 类型。...因此,IEnumerable 也是不能继承。 object 看来,我们只能继承自单纯 object 基类了。此类型没有对托管来说可见状态,于是谁也不会多次读取状态造成状态不确定了。

    16240

    C# API中模型和它们接口设计

    数据传输对象(Data Transfer Object,DTO) DTO是只包含属性和集合对象对象图。一个真正DTO没有任何行为,而且几乎是不可变。...为了支持延迟加载,来自ORM实体通常会包含一个对数据库上下文引用。这就又让我们回到了非确定性行为领域,实体行为变化取决于上下文状态以及对象创建方式。...如果你重新定义它,让它只包含对象级错误,那么就无法知道对象作为整体是否包含错误。 至于索引器,你会怎么调用它?要访问它唯一方法是将该对象转换成IDataErrorInfovariable。...立即返回,这会让调用变得不确定,因为你不知道是否存在挂起异步验证请求。...从用户界面角度来看,用户通常想知道是“这个对象或它任何对象是否发生变化了?” 从数据存储角度来看,你希望知道对象本身是否发生了变化。

    1.6K20

    .NET深入解析LINQ框架(四:IQueryable、IQueryProvider接口详解)

    如果我们是直接使用系统提供IEnumerable对象的话,只需要构建IEnumerable对象扩展方法就能实现对集合类型扩展。...只有这样才能真正让这种技术深入人心,才能在实际系统开发当中去灵活运用。 下面我们来构建一个简单IEnumerable扩展方法,用来处理当前集合中数据是否可以进行数据插入操作。...这幅图重点是IQueryable对象连续操作,大致原理是每次执行扩展方法时候都会构造一个新IQueryable,本次IQueryable对象包含上次执行表达式树,以此类推就形成了一颗庞大表达式树...详细原理在下面几小节中具体分析。 最后Orderlist将是一个IQueryable类型对象,该对象包含了完整表达式树,这个时候如果我们不进行任何使用将不会触发数据查询。...方法中有两个判断,第一个是判断是否是通过扩展方法方式调用代码,防止我们直接使用扩展方法,第二个判断是确定我们是否提供了表达式。 那么重点是最后一行代码,它包裹着几层方法调用,到底是啥意思呢?

    1.5K11

    .NET面试题系列 - 泛型

    “可变性是以一种类型安全方式,将一个对象作为另一个对象来使用。“ - Jon Skeet 泛型 泛型相比反射,委托等较为抽象概念要更接地气得多,而且在平常工作时,我们几乎时刻都和泛型有接触。...构造函数new()约束:泛型实参必须具有可访问无参数构造函数(默认也可)。new()约束出现在where子句最后。 如果泛型方法没有任何约束,则传入对象会被视为object。...它们功能比较有限。不能使用 != 和 == 运算符,因为无法保证具体类型参数能支持这些运算符。 协变和逆变 可变性是以一种类型安全方式,将一个对象作为另一个对象来使用。...其对应术语则是不变性(invariant)。 可变性 可变性是以一种类型安全方式,将一个对象作为另一个对象来使用。...可变性只能用于引用类型,禁止任何值类型和用户定义转换,如下面的转换是无效: 将 IEnumerable 转换为 IEnumerable ——装箱转换 将 IEnumerable

    72030

    C#3.0新增功能07 查询表达式

    例如,SQL 数据库表包含序列。 在 XML 文件中,存在 XML 元素“序列”(尽管这些元素在树结构按层次结构进行组织)。 内存中集合包含对象序列。...从应用程序角度来看,原始源数据特定类型和结构并不重要。 应用程序始终将源数据视为 IEnumerable 或 IQueryable 集合。...例如,假设具有 Country 对象集合,其中每个对象包含名为 Cities City 对象集合。...group 子句 使用 group 子句可生成按指定键组织序列。 键可以是任何数据类型。 例如,下面的查询会创建包含一个或多个 Country 对象并且其键是 char 值序列。...select 子句 使用 select 子句可生成所有其他类型序列。 简单 select 子句只生成类型与数据源中包含对象相同对象序列。 在此示例中,数据源包含 Country 对象

    2.1K10

    .NET 2.0运行时LINQ

    启用LINQ应用程序是否可以在仅安装了.NET 2.0运行时计算机上运行? 从理论上讲,LINQ只不过是语法糖,而得到IL代码应该与.NET 2.0中代码相同....基本上,任何只有"语法糖"东西和新编译器(C#3.0,VB 9.0)都会发布兼容2.0IL.这包括LINQ使用许多功能,例如匿名类,作为匿名委托lambdas,自动属性,对象初始值设定项和集合初始值设定项...到对象依赖于IEnumerable扩展和几个委托声明(中Action和Func家庭),并已在实施LINQBridge(如mausch提到).LINQ to XML和LINQ to DataSets依赖于...,其中,即使在某种程度上重新实现,可能需要至少NET 2.0 SP1工作. 6> Scott Wisnie..: 我不确定C#.... end function 表达式树版本使您能够获得提供给子句表达式树表示,然后可以使用它们来生成SQL代码(或者您想要任何其他内容).

    19610

    通过运行期类型检查实现泛型算法

    Tip:本文首发于喵叔 CSDN 博客,转载于喵叔 InfoQ 博客,本人未授权任何网站、公众号以及其他任何形式转载。发布不等于免费、开源不等于无所顾忌,请遵守职业道德。...针对这一点 C# 允许在发现类型参数所表示对象具有更多功能时编写更具体代码。...这一点是利用了泛型依据对象编译器类型来进行实例化这一特点,如果我们在开发时没有想到这一点就有很大可能降低程序性能。...,因为它可以利用 Count 属性将 IList 大小确定下来。...都是执行运行期测试,测试是参数在运行期状态,因此为了确定参数所表示对象是否具有一些功能,我们程序必须消耗一定时间去判断,在绝大多数情况下这种做法消耗性能不是很多。

    61610

    WCF技术剖析之十四:泛型数据契约和集合数据契约(下篇)

    有的集合要求元素具有相同类型,这种集合一般通过泛型方式定义,它们实现另一个接口IEnumerableIEnumerable本身继承自IEnumerable),这样集合有List...,为此我们使用下面一个包含已知类型列表参数Serialize辅助方法进行序列化工作。...对于IEnumerable和IList,集合元素类型没有限制,可以是任何类型对象,所以根节点名称为ArrayOfanyType,每个子节点名称为anyType。...Customer列表通过IList类型成员保存;定义了两个构造函数,无参构造函数没有任何实现,另一个则提供Customer对象列表;Add方法方便添加Customer对象成员。...借助前面定义两个Serialize辅助方法,对表示相同Customer集合IDictionary与Hashtable对象进行序列化,由于对于Hashtable来说,无法确定集合元素具体类型

    1.5K70
    领券