我有一份名单叫
private List<Car> Cars; //Car is another class
我想从List< Car > Cars中的信息创建一个新列表,该列表使用参数来指定要从汽车列表中提取的年份范围,然后将其放入一个名为
private List<Car> getCars;
代码如下。请注意,这只是一个项目的一部分,所以不是所有的代码都提供。
private List<Car> Cars;
private List<Car> getCars;
public List<Car> GetCars(int fromYear, int toYear)
{
getCars = new List<Car> { };
foreach (Car c in Cars)
if (c.Year >= fromYear && c.Year <= toYear)
getCars.Add(c);
return getCars;
}
我遇到的问题是,虽然在我运行代码时没有出现错误,但新的列表并没有打印出来,而是打印出来了
System.Collection.Generic.List‘1Lab__2 1Lab
在如何让它打印出列表的对象而不是上面的内容方面,任何帮助都是非常有用的。最后,我的讲师明确表示,他希望该方法的格式如下
public List<Car> GetPrices(int year)
{
}
发布于 2015-11-03 20:45:07
您看到的是直接在列表上调用print时得到的输出。它不会自动打印内容,您必须自己打印每个项目。
发布于 2015-11-03 20:58:16
您肯定是直接在列表上调用ToString()
方法,但它只打印其类型:
Object.ToString方法的
默认实现返回对象类型的完全限定名。- MSDN
因此,您必须遍历列表中的项并打印其详细信息。示例:
foreach (Car c in Cars) {
Console.WriteLine(c.Name); //I do not know what properties you have in the class Car. Change accordingly.
}
或者,您可以使用String.Join()
String.Join(Environment.NewLine, Cars); //You can change 'Environment.NewLine' to ", " if you want a comma instead of a new line.
发布于 2015-11-03 20:58:44
试着这样做:
public Class Car
{ // guessing here
public string Make { get; set; }
public string Model { get; set; }
public int Year { get; set; }
public override string TosString()
{
return "Make: " + Make + ", Model: " + Model + ", Year: " + year;
}
然后,在你的程序中的某个地方:
foreach(var car in CarList.Where(c => c.Year >= fromYear && c.Year <= toYear))
{
Console.Out.WriteLine(car);
}
注意,您的GetCars()
的功能是如何在一个相当易读的Linq Where方法调用中表达出来的。
https://stackoverflow.com/questions/33499365
复制相似问题