如何使用Exist in List在c#

本文关键字:string List 何使用 Exist in | 更新日期: 2023-09-27 18:18:19

我必须找到字符串是否存在于列表中,以避免重复插入:以下是来自Microsoft网站的示例:

using System;
using System.Collections.Generic;
public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>();
        dinosaurs.Add("Compsognathus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Oviraptor");
        dinosaurs.Add("Velociraptor");
        dinosaurs.Add("Deinonychus");
        dinosaurs.Add("Dilophosaurus");
        dinosaurs.Add("Gallimimus");
        dinosaurs.Add("Triceratops");
        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }
        Console.WriteLine("'nTrueForAll(EndsWithSaurus): {0}",
            dinosaurs.TrueForAll(EndsWithSaurus));
        Console.WriteLine("'nFind(EndsWithSaurus): {0}", 
            dinosaurs.Find(EndsWithSaurus));
        Console.WriteLine("'nFindLast(EndsWithSaurus): {0}",
            dinosaurs.FindLast(EndsWithSaurus));
        Console.WriteLine("'nFindAll(EndsWithSaurus):");
        List<string> sublist = dinosaurs.FindAll(EndsWithSaurus);
        foreach(string dinosaur in sublist)
        {
            Console.WriteLine(dinosaur);
        }
        Console.WriteLine(
            "'n{0} elements removed by RemoveAll(EndsWithSaurus).", 
            dinosaurs.RemoveAll(EndsWithSaurus));
        Console.WriteLine("'nList now contains:");
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }
        Console.WriteLine("'nExists(EndsWithSaurus): {0}", 
            dinosaurs.Exists(EndsWithSaurus));
    }
    // Search predicate returns true if a string ends in "saurus".
    private static bool EndsWithSaurus(String s)
    {
        return s.ToLower().EndsWith("saurus");
    }
}

是否可以用lambda表达式代替EndsWithSaurus函数?谢谢大家的意见!!下面是一个工作代码:

        if (dinosaurs.Any(e => e.EndsWith("saurus")))
            Console.WriteLine("saurus exists");
        if (dinosaurs.Exists(e => e.EndsWith("saurus")))
            Console.WriteLine("saurus exists");

如何使用Exist in List<string>在c#

试试这个:

if (dinosaurs.Exists(e => e.EndsWith("saurus")))
        Console.WriteLine("saurus exists");

Any()的答案也很好。不同之处在于Exists()方法来自List<T>本身,而Any()只是一个伟大的Linq扩展方法(并且需要using System.Linq)

使用Any:

if (dinosaurs.Any(e => e.EndsWith("saurus")))
        Console.WriteLine("saurus exists");

可以使用List.Exists()只需要改变你的lambda:

if (dinosaurs.Exists(e => e.EndsWith("saurus"))   // == true is implied
        Console.WriteLine("saurus exists");

,但Any更易于移植(即可以与任何可枚举的一起使用,而不仅仅是List s。