如何使用C#中的List 中的Exist

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

using System; using System.Collections.Generic; public class Example { public static void Main() { List dinosaurs = new List(); 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 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"); 

试试这个:

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

Any()的答案也可以正常工作。 不同之处在于Exists()方法来自List本身,而Any()只是Linq扩展方法之一(并且需要using System.Linq

使用Any

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

可以通过改变你的lambda 使用List.Exists()

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

Any更便携(即可以与任何可枚举,不仅仅是List s一起使用)。