如何使用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一起使用)。