C# 判断一个List是否包含在另一个List当中

本文介绍如何使用C#判断一个List是否完全包含在另一个List中,包括基本类型和自定义对象类型的比较方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如题:C# 判断一个List是否包含在另一个List当中

定义两个list

 List<int> c = new List<int>();
 List<int> d = new List<int>();
 c.Add(1);
 c.Add(2);
 d.Add(1);
 d.Add(2);
 d.Add(3);

现在判断d中是否包含c:

if (c.All(t => d.Any(b => b==t)))
{
    //包含
}else
{
    //不包含
}

如果list中存放的是对象,可以这样:

定义两个list:

public class Model
    {
        public int id { get; set; }
        public int age { get; set; }

        public Model(int id,int age)
        {
            this.id = id;
            this.age = age;
        }
    }
 List<Model> a = new List<Model>();
 a.Add(new Model(1,2));
 a.Add(new Model(2, 3));
 a.Add(new Model(3, 4));

 List<Model> b1 = new List<Model>();
 b1.Add(new Model(1, 2));
 b1.Add(new Model(2, 3));
 b1.Add(new Model(3, 4));
 b1.Add(new Model(1, 2));
if (a.All(t => b1.Any(b => b.age == t.age && b.id == t.id)))
{
    //包含
}else
{
    //不包含
}

在这里比较了b.age == t.age && b.id == t.id,当然需要比较什么自己决定就好。。。

 

### 如何在 C# 中检查字符串是否存在于 `List<string>` 中 在 C# 中,可以使用多种方法来检查某个字符串是否存在于 `List<string>` 集合中。以下是几种常见的实现方式: #### 方法一:使用 `Contains` 方法 `List<T>` 提供了一个名为 `Contains` 的方法,可以直接用于判断集合中是否存在指定的元素。 ```csharp using System; using System.Collections.Generic; class Program { static void Main() { List<string> stringList = new List<string>() { "Zhao", "Li", "Wang" }; bool isExists = stringList.Contains("Zhao"); Console.WriteLine(isExists); // 输出 True isExists = stringList.Contains("Chen"); Console.WriteLine(isExists); // 输出 False } } ``` 此方法简单高效,适用于大多数场景[^1]。 --- #### 方法二:使用 LINQ 查询 通过引入 `System.Linq` 命名空间,还可以利用 LINQ 来执行更复杂的查询操作。 ```csharp using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { List<string> stringList = new List<string>() { "Zhao", "Li", "Wang" }; bool isExists = stringList.Any(x => x.Equals("Zhao")); Console.WriteLine(isExists); // 输出 True isExists = stringList.Any(x => x.Equals("Chen")); Console.WriteLine(isExists); // 输出 False } } ``` LINQ 提供了更大的灵活性,尤其适合处理复杂条件下的匹配需求[^2]。 --- #### 方法三:手动遍历查找 如果不想依赖内置函数或 LINQ,也可以通过循环逐一比较每个元素。 ```csharp using System; using System.Collections.Generic; class Program { static void Main() { List<string> stringList = new List<string>() { "Zhao", "Li", "Wang" }; string targetString = "Zhao"; bool isExists = false; foreach (var item in stringList) { if (item.Equals(targetString)) { isExists = true; break; } } Console.WriteLine(isExists); // 输出 True } } ``` 尽管这种方法效率较低,但在某些特殊情况下可能仍然适用。 --- ### 总结 上述三种方法各有优劣: - 如果追求简洁性和可读性,推荐使用 `Contains` 方法。 - 对于需要支持动态条件的情况,则可以选择基于 LINQ 的解决方案。 - 手动遍历通常仅作为最后的选择,在特定约束条件下才考虑采用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值