ZetCode

C# List Contains & Exists

最后修改于 2023 年 7 月 5 日

在本文中,我们将展示如何在 C# 中检查列表中是否存在元素或特定元素。

C# 列表是相同类型元素的集合。 可以通过索引访问这些元素。

检查列表中元素或元素存在性的两个基本方法是:ContainsExists

或者,也可以使用 CountIndexOfFindAny 方法。

C# List Contains

Contains 方法检查列表中是否存在某个元素。

public bool Contains (T item);

该方法返回一个布尔值。

Program.cs
var words = new List<string> { "falcon", "water", "war", "pen", "ocean" };

var w1 = "war";
var w2 = "cup";

if (words.Contains(w1))
{
    Console.WriteLine($"{w1} is in the list");
}
else
{
    Console.WriteLine($"{w1} is not in the list");
}

if (words.Contains(w2))
{
    Console.WriteLine($"{w2} is in the list");
}
else
{
    Console.WriteLine($"{w2} is not in the list");
}

在该示例中,我们检查两个单词是否存在于定义的单词列表中。

$ dotnet run
war is in the list
cup is not in the list

C# List Exists

Exists 方法确定列表是否包含与指定谓词匹配的元素。

Program.cs
var words = new List<string> { "falcon", "water", "war", "pen", "ocean" };

bool res = words.Exists(e => e.StartsWith("w"));

if (res)
{
    Console.WriteLine("There are words starting in w");
} else
{
    Console.WriteLine("There are no words starting in w");
}


bool res2 = words.Exists(e => e.EndsWith("c"));

if (res2)
{
    Console.WriteLine("There are words ending in c");
} else
{
    Console.WriteLine("There are no words ending in c");
}

在该程序中,我们检查是否存在一些以“w”开头并以“c”结尾的单词;

bool res = words.Exists(e => e.StartsWith("w"));

Exists 方法接受一个谓词函数作为参数。 谓词采用 lambda 表达式的形式。

if (res)
{
    Console.WriteLine("There are words starting in w");
} else
{
    Console.WriteLine("There are no words starting in w");
}

根据接收到的值打印消息。

$ dotnet run
There are words starting in w
There are no words ending in c

C# Enumerable.Count

我们可以使用 LINQ 的 Count 检查列表中是否存在一个或多个元素。 Count 方法返回序列中元素的数量。

有两个重载的 Count 方法。 一个计算所有元素,另一个计算所有符合条件的元素。

Program.cs
var vals = new List<int> { -2, 0, -1, 4, 3, 5, 3, 8 };

int n = vals.Count(e => e < 0);

if (n == 0)
{
    Console.WriteLine("There are no negative values");
} else 
{
    Console.WriteLine($"There are {n} negative values");
}

在该程序中,我们使用 Count 检查列表中是否存在负值。

int n = vals.Count(e => e < 0);

我们使用将谓词作为参数的方法。

$ dotnet run
There are 2 negative values

C# Enumerable.Any

Any 方法确定序列中是否存在任何元素或满足条件。 它返回一个布尔值 true 或 false。

Program.cs
var vals = new List<int> { -2, 0, -1, 4, 3, 5, 3, 8 };

bool r = vals.Any(e => e < 0);

if (r)
{
    Console.WriteLine("There are negative values");
} else 
{
    Console.WriteLine($"There are no negative values");
}

在该程序中,我们使用 Any 检查是否存在一些负值。

$ dotnet run
There are negative values

来源

List 类 - 语言参考

在本文中,我们展示了如何在 C# 中检查列表中是否存在元素。

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直撰写编程文章。 迄今为止,我已经撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有 C# 教程