Концепция LINQ в C# - PullRequest
       0

Концепция LINQ в C#

0 голосов
/ 18 марта 2020

Напишите программу для поиска автомобилей, выпущенных в течение определенного года.

  1. класс Автомобиль уже указан для справки.

  2. Программа класса содержит жестко запрограммированный список с информацией об автомобиле в атрибуте vehicleList.

a) Реализуйте метод 'getVehicleName'.

publi c stati c void getVehicleName (int fromYear, int toYear) // подпись метода

Этот метод должен отображать названия транспортных средств (из заданного списка), выпущенных между годами и годами (включая эти годы). ИСПОЛЬЗОВАНИЕ LINQ CONCEPT

b) Реализуйте метод 'Main'.

Получите год от года от пользователя. Передайте его методу getVehicleName.

ПРИМЕЧАНИЕ. НЕ НУЖНО вызывать метод getMyExpression в Main.

c) Реализуйте метод getMyExpression

publi c stati c Выражение getMyExpression (int fromYear, int toYear)

Этот фрагмент метода уже предоставлен для вас. ЭТОТ МЕТОД ДЛЯ ТЕСТИРОВАНИЯ ВАШЕГО ВЫРАЖЕНИЯ ЗАПРОСА LINQ ИЛИ РАСШИРЕНИЯ МЕТОДА LINQ. Поэтому заполните свое выражение запроса или расширение метода в предоставленном месте. ТОЛЬКО ЗАПРОС ВЫРАЖЕНИЯ ИЛИ ДОЛЖНЫ МЕТОДА. Больше ничего не нужно реализовывать в этом классе.

Я получаю ошибку - LinqApp1.Vehicle' does not contain a definition for Где '.

Vehicle.cs

namespace LinqApp1                
{
public class Vehicle          
{
    public String VehicleId{get; set; }
    public String VehicleName{ get; set; }
    public String Brand { get; set; }
    public int ReleaseYear { get; set; }

    public Vehicle(String vehicleId, String vehicleName, String brand,int releaseYear)
    {
        this.VehicleId = vehicleId;
        this.VehicleName = vehicleName;
        this.Brand = brand;
        this.ReleaseYear = releaseYear;
    }

}

}

Program.cs

 namespace LinqApp1                //DO NOT CHANGE the namespace name
 {

  public class Program         //DO NOT CHANGE the class name
  {
    /** DO NOT CHANGE this 'List' declaration with initialized values  **/
    public static List<Vehicle> vehicleList = new List<Vehicle>()
                            {
                                new Vehicle("HO345","CRV","Honda",2015),
                                new Vehicle("HY562","Creta","Hyundai",2017),
                                new Vehicle("RE198","Duster","Reanult",2014),
                                new Vehicle("MA623","Spacio","Suzuki",2014),
                                new Vehicle("TR498","Nexon","Tata",2015),
                                new Vehicle("TR981","Zest","Tata",2016),
                                new Vehicle("HO245","WRV","Honda",2018)

                            };

    static void Main(string[] args)   //DO NOT Change this 'Main' signature
    {
        int fromy,toy;
        Console.Write("Enter From Year : ");
        fromy = int.Parse(Console.ReadLine());
        Console.Write("Enter To Year : ");
        toy = int.Parse(Console.ReadLine());
        getVehicleName(fromy,toy);
    }

    public static void getVehicleName(int fromYear, int toYear)
    {
        IEnumerable<int> L = from v in Vehicle 
        where(v.releaseYear >= fromYear && v.releaseYear <= toYear)
        select v.VehicleName; 

    }


     /** DO NOT CHANGE this ParameterExpression **/  
    public static ParameterExpression variableExpr = Expression.Variable(typeof(IEnumerable<Vehicle>), "sampleVar");

    public static Expression getMyExpression(int fromYear, int toYear)
    {  
        Expression assignExpr = Expression.Assign(variableExpr, Expression.Constant(vehicle.Where(v => v.releaseYear >= fromYear && v.releaseYear <= toYear.select(n => n.VehicleName))));
        return assignExpr;
    }

}

}

1 Ответ

1 голос
/ 18 марта 2020

Запрос вместо вашего vehicleList вместо:

public static void getVehicleName(int fromYear, int toYear)
{
    IEnumerable<string> L = from v in vehicleList 
    where(v.ReleaseYear >= fromYear && v.ReleaseYear <= toYear)
    select v.VehicleName; 

}

В вашем getMyExpression методе:

vehicle.Where(v => v.releaseYear >= fromYear && v.releaseYear <= toYear.select(n => n.VehicleName)))

должно быть:

vehicleList.Where(v => v.ReleaseYear >= fromYear && v.ReleaseYear <= toYear).Select(n => n))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...