c# - 列表过滤变体

标签 c# list methods

是否有一种简单的方法(可能是一种方法)从列表中检索对象,具体取决于其属性是否与请求的属性匹配?

例如,如果我有 List<Animal>Animal类有一个属性 Size .如何从列表中获取对象 Size=42 ?这就像过滤,但没有更简单快捷的方法吗?使用ICollectionView .

public Animal getAnimalWithSize42 (List<Animal> animList)
{
    List<Animal> size42Animals = new List<Animal>
    foreach (Animal anim in animList)
    { 
        if(anim.Size==42)
       size42Animals.Add(anim);
    }
    return size42Animals;
}

这是某种实现的功能吗?

最佳答案

您可以使用 LINQ,这通常是最简单的方法。可能是这样的:

IEnumerable<Animal> getAnimalWithSize42(IEnumerable<Animal> animList)
{
    return animList.Where(animal => animal.Size == 42);
}

如果你想变得漂亮 - 你甚至可以让调用者传递他们想要检索的内容:
IEnumerable<Animal> getAnimalsMeetingCriteria(IEnumerable<Animal> animals, Func<Animal, bool> filter)
{
    return animals.Where(filter);
}

确保添加对 System.Linq 的引用在需要使用它的文件中。

关于c# - 列表过滤变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16964092/

相关文章:

c# - 将 MS Access 数据库导入 SQL Server 时性能缓慢

c# - 正则表达式匹配部分或整个单词

python - 将数据从Python列表和字典写入CSV

java - 如何创建具有两个字段的自定义类的列表并获取输出?

c# - 如何从 C# 应用程序远程调用另一个进程方法

c# - 在 pinvoke 类/结构构造中使用 MarshalAs 与不使用 Marshal

c# - 使用通用 IHostBuilder 时访问 IServiceProvider

python - 迭代两个字典并创建一个键不匹配的新字典

java - 我需要检查一个方法是否被覆盖

Java 继承 - 找不到在对象上调用的方法?