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