1

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

例如,如果我有List<Animal>并且Animal班级有一个 property 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;
}

这是某种实现的功能吗?

4

4 回答 4

5

您可以使用 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在需要使用它的文件中添加对的引用。

于 2013-06-06T14:01:49.697 回答
4

您可以使用 LINQ:

return animList.Where(anim => anim.Size == 42);
于 2013-06-06T14:02:23.937 回答
1

LINQ 非常适合此目的:

public Animal getAnimalWithSize42 (List<Animal> animList)
{
    return animList.Where(a => a.Size == 42);
}
于 2013-06-06T14:03:00.113 回答
1

使用 LINQ 来完成。

List<Animal> size42Animals = animList.Where(anim => anim.Size == 42).ToList();
于 2013-06-06T14:02:38.033 回答