有很多方法可以在列表中查找项目。
LINQ 提供了扩展方法,可用于处理不提供自己的搜索功能的集合(或者当您没有集合本身但有像IEnumerable<T> 这样的通用接口时)。如果您有一个List<CompareDesignGroup> 对象并且您将处理该对象,您可以使用该类提供的方法(specialized methods are almost always faster than LINQ methods,它们知道集合的内部结构,并且不必依赖许多抽象层)。
在所有示例中,我将对FieldId 与假设的id 参数进行文化不变量和区分大小写的比较。这可能不是您所需要的,您可能需要根据您的要求进行更改。
使用List<T>
给定一个声明为的列表:
List<CompareDesignGroup>() list = new List<CompareDesignGroup>();
查找与搜索条件匹配的 first 元素(如果未找到任何项目,它将返回 null):
CompareDesignGroup item = list.Find(
x => String.Equals(x.FieldId, id, StringComparison.InvariantCulture));
查找所有符合搜索条件的元素:
List<CompareDesignGroup> items = list.FindAll(
x => String.Equals(x.FieldId, id, StringComparison.InvariantCulture));
使用IEnumerable<T>(或IList<T>,例如)
给定一个声明为的列表:
IEnumerable<CompareDesignGroup> list = ...
查找与搜索条件匹配的第一个元素(null,如果未找到任何项目):
CompareDesignGroup item = list.FirstOrDefault(
x => String.Equals(x.FieldId, id, StringComparison.InvariantCulture));
要查找与搜索条件匹配的 first 元素(如果未找到任何项目,则抛出异常):
CompareDesignGroup item = list.First(
x => String.Equals(x.FieldId, id, StringComparison.InvariantCulture));
要查找与搜索条件匹配的所有元素:
IEnumerable<CompareDesignGroup> item = list.Where(
x => String.Equals(x.FieldId, id, StringComparison.InvariantCulture));
LINQ 扩展方法有很多,我建议大家都看看,找到更适合您需求的。