如何在C#中使用LINQ搜索特定字符串属性的对象列表

时间:2015-02-08 15:38:24

标签: c# linq

我有以下代码:

    private List<Car> Fleet = new List<Car>()
    {
       new Car("Toyota", "Corola","YI348J", 2007, 7382.33),
       new Car("Renault", "Megane","ZIEKJ", 2001, 1738.30),
       new Car("Fiat", "Punto","IUE748", 2004, 3829.33)
    };

    public void addToFleet(String make, String model, String registration, int year, Double costPrice)
    {
        Fleet.Add(new Car(make, model, registration, year, costPrice));
    }

在将新的Car对象添加到Fleet列表之前,我需要检查&#39;注册&#39;并不存在作为列表中任何Car对象的属性。此检查需要使用LINQ并在addToFleet方法中。

3 个答案:

答案 0 :(得分:5)

假设您的Car类有一个属性注册:

private List<Car> Fleet = new List<Car>()
{
   new Car("Toyota", "Corola","YI348J", 2007, 7382.33),
   new Car("Renault", "Megane","ZIEKJ", 2001, 1738.30),
   new Car("Fiat", "Punto","IUE748", 2004, 3829.33)
};

public void addToFleet(String make, String model, String registration, int year, Double costPrice)
{
    if(Fleet.Any(car => car.Registration == registration))
    {
       // already in there
    } 
    else
    {
      Fleet.Add(new Car(make, model, registration, year, costPrice));
    }
}

答案 1 :(得分:1)

只需检查是否有Any辆车的注册符合通过的注册。如果不是Add

public void addToFleet(String make, String model, String registration, int year, Double costPrice)
{
    if  (!Fleet.Any(x => x.Registration.ToLower() == registration.ToLower()))
        Fleet.Add(new Car(make, model, registration, year, costPrice));
}

我将注册转换为较低,以便字符串大小写成为问题。 LINQ或Lambda表达式。没关系。 LINQ由编译器转换为lambda。

答案 2 :(得分:-1)

首先,您应该知道如何使用LINQ进行搜索。

  

SearchAdapter包含核心搜索功能,负责根据用户输入的搜索条件选择数据。课堂上有三种方法和一种属性。该类外部唯一可用的适配器是PerformSearch方法,它是程序集内部的。

Read这是教程。