C#linq与表达式

C#linq与表达式,c#,linq,C#,Linq,我是c#新手,在理解给定的问题陈述时遇到问题。 问题陈述: 编写一个程序,查找特定年份之间发布的车辆 已提供车辆等级,供您参考 类程序包含一个硬编码列表,在“vehicleList”属性中包含车辆信息 a) 实现方法“getVehicleName” public static void getVehicleName(int fromYear,int toYear)//方法签名 此方法必须显示fromYear和toYear(包括这些年份)之间发布的车辆名称(来自给定列表)。使用LINQ概念 b)

我是c#新手,在理解给定的问题陈述时遇到问题。 问题陈述: 编写一个程序,查找特定年份之间发布的车辆

  • 已提供车辆等级,供您参考

  • 类程序包含一个硬编码列表,在“vehicleList”属性中包含车辆信息

  • a) 实现方法“getVehicleName”

    public static void getVehicleName(int fromYear,int toYear)//方法签名

    此方法必须显示fromYear和toYear(包括这些年份)之间发布的车辆名称(来自给定列表)。使用LINQ概念

    b) 实现方法“Main”

    从用户处获取from year和to year。将其传递给“getVehicleName”方法

    注意:不需要在Main中调用“getMyExpression”方法

    c) 实现方法“getMyExpression”

    公共静态表达式getMyExpression(int fromYear,int toYear)

    已经为您提供了此方法片段。此方法用于测试LINQ查询表达式或LINQ方法扩展。因此,请在提供的空格中填写查询表达式或方法扩展名。仅查询表达式或方法扩展名。在这个类中不需要实现更多的东西

    可能继承列表 将方法
    getVehicleName
    实现为linq查询

    public string getVehicleName => this.FirstOrDefault(o => ...
    

    看来你就快到了:

    from v in vehicle 
    where v.ReleaseYear >= fromYear && v.ReleaseYear <= toYear 
    select v.VehicleName
    
    来自车辆中的v
    其中v.ReleaseYear>=fromYear&&v.ReleaseYear v.ReleaseYear>=fromYear&&v.ReleaseYear n.VehicleName)
    
    来自车辆列表中的v,其中v.ReleaseYear>=来自年份和&v.ReleaseYear在实现getVehicleName时使用:


    from v in Vehicle列出其中v.ReleaseYear>=fromYear和v.ReleaseYear s.ReleaseYear>=fromYear和s.ReleaseYearVehicle.cs

    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;
        }
        
    }
    
        static void Main(string[] args)   
        {
            
            
            Console.WriteLine("Enter From Year :");
            int fromYear = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter To Year :");
            int toYear = int.Parse(Console.ReadLine());
            GetVehicleName(fromYear,toYear);
         
            
            
        }
        public static void GetVehicleName(int fromYear , int toYear){
            var resultQuery = from v in VehicleList where v.ReleaseYear >= fromYear && v.ReleaseYear <= toYear orderby v.ReleaseYear select v;
            Console.WriteLine($"Vehicle Name Released Between {fromYear} And {toYear} :");
            foreach (Vehicle s in resultQuery)
            {
                Console.WriteLine(s.VehicleName);
    
            }
            Console.ReadKey();
            
            
        }
        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(from v in VehicleList where v.ReleaseYear >= fromYear && v.ReleaseYear <= toYear orderby v.ReleaseYear select v));
            return assignExpr;
        }
    
    Program.cs

    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;
        }
        
    }
    
        static void Main(string[] args)   
        {
            
            
            Console.WriteLine("Enter From Year :");
            int fromYear = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter To Year :");
            int toYear = int.Parse(Console.ReadLine());
            GetVehicleName(fromYear,toYear);
         
            
            
        }
        public static void GetVehicleName(int fromYear , int toYear){
            var resultQuery = from v in VehicleList where v.ReleaseYear >= fromYear && v.ReleaseYear <= toYear orderby v.ReleaseYear select v;
            Console.WriteLine($"Vehicle Name Released Between {fromYear} And {toYear} :");
            foreach (Vehicle s in resultQuery)
            {
                Console.WriteLine(s.VehicleName);
    
            }
            Console.ReadKey();
            
            
        }
        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(from v in VehicleList where v.ReleaseYear >= fromYear && v.ReleaseYear <= toYear orderby v.ReleaseYear select v));
            return assignExpr;
        }
    
    static void Main(字符串[]args)
    {
    Console.WriteLine(“输入起始年份:”);
    int fromYear=int.Parse(Console.ReadLine());
    Console.WriteLine(“输入年份:”;
    int toYear=int.Parse(Console.ReadLine());
    GetVehicleName(fromYear,toYear);
    }
    公共静态无效GetVehicleName(int fromYear,int toYear){
    
    var resultQuery=from v in vehicle列表,其中v.ReleaseYear>=fromYear&&v.ReleaseYear=fromYear&&v.ReleaseYear请以文本形式包含代码,而不是图像。并非所有内容都是如此,因此访问者将跟踪图像链接,有些人由于公司防火墙的原因无法跟踪。文本还允许人们复制/粘贴,以防他们需要进行自己的测试,并使其成为现实archable.Text降低了向您提供帮助的障碍。getMyExpression
    的作用是什么?虽然此代码可能有助于回答问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它。从长远来看,仅代码的答案往往不太有用。有关更多信息,请参阅。虽然此代码可以回答问题,但专业人士提供关于此代码为什么和/或如何回答此问题的其他上下文可提高其长期价值。
    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;
        }
        
    }
    
        static void Main(string[] args)   
        {
            
            
            Console.WriteLine("Enter From Year :");
            int fromYear = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter To Year :");
            int toYear = int.Parse(Console.ReadLine());
            GetVehicleName(fromYear,toYear);
         
            
            
        }
        public static void GetVehicleName(int fromYear , int toYear){
            var resultQuery = from v in VehicleList where v.ReleaseYear >= fromYear && v.ReleaseYear <= toYear orderby v.ReleaseYear select v;
            Console.WriteLine($"Vehicle Name Released Between {fromYear} And {toYear} :");
            foreach (Vehicle s in resultQuery)
            {
                Console.WriteLine(s.VehicleName);
    
            }
            Console.ReadKey();
            
            
        }
        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(from v in VehicleList where v.ReleaseYear >= fromYear && v.ReleaseYear <= toYear orderby v.ReleaseYear select v));
            return assignExpr;
        }