使用linq查询类对象

使用linq查询类对象,linq,class,object,lambda,Linq,Class,Object,Lambda,我正在尝试查询一个类对象 我的班级: public class Result { public List<Driver> Drivers { get; set; } public List<Vehicle> Vehicles { get; set; } } 公共类结果 { 公共列表驱动程序{get;set;} 公共列表车辆{get;set;} } 我有一个方法,我正在将这个类的对象传递给它 public string BuildRequ

我正在尝试查询一个类对象

我的班级:

public class Result
{
   public List<Driver>  Drivers { get; set; }
   public List<Vehicle> Vehicles { get; set; }       
}
公共类结果
{
公共列表驱动程序{get;set;}
公共列表车辆{get;set;}
}
我有一个方法,我正在将这个类的对象传递给它

  public string BuildRequestXML(Result  input)
     { 
       var driverNames = new List<Name>(); 
       input.Drivers.ForEach(cd => driverNames.Add(cd.Name)); 
     }                                                                                         
公共字符串BuildRequestXML(结果输入)
{ 
var driverNames=新列表();
input.Drivers.ForEach(cd=>driverNames.Add(cd.Name));
}                                                                                         
在上述函数的第2行代码中,我得到的对象引用未设置为实例错误。
提前谢谢。
BB.

我不太清楚您为什么会遇到这个问题,但是,更好的方法是使用选择“投影”,如下所示:

driverNames  = input.Drivers.Select(d => d.Name).ToList();

我不太清楚您为什么会遇到这个问题,但是,更好的方法是使用如下选择的“投影”:

driverNames  = input.Drivers.Select(d => d.Name).ToList();

您必须进行调试才能找到它是哪一个,但该异常可能是因为
input
input.Drivers
为空。您甚至可以在
驱动程序
列表中有一个空的
驱动程序

至于您的
driversName
列表,您可以将其重写为

var driverNames = input.Drivers.Select(driver => driver.Name).ToList();

您必须进行调试才能找到它是哪一个,但该异常可能是因为
input
input.Drivers
为空。您甚至可以在
驱动程序
列表中有一个空的
驱动程序

至于您的
driversName
列表,您可以将其重写为

var driverNames = input.Drivers.Select(driver => driver.Name).ToList();

你试过调试它吗?检查异常堆栈跟踪?VS中的断点?有了这样的描述,这似乎是一个最容易调试的错误。你试过调试它吗?检查异常堆栈跟踪?VS中的断点?有了这样的描述,这似乎是一个最容易调试的错误。谢谢安东尼。我看到我的驱动程序列表计数=1。我仍然收到这个错误。请看附在原始问题上的截图。@BumbleBee-你从@ColinE和@Anthony那里得到了很好的建议。尝试在没有LINQ的情况下重写它(使用foreach循环)并调试它。你会找到你的虫子的。谢谢你,安东尼。我看到我的驱动程序列表计数=1。我仍然收到这个错误。请看附在原始问题上的截图。@BumbleBee-你从@ColinE和@Anthony那里得到了很好的建议。尝试在没有LINQ的情况下重写它(使用foreach循环)并调试它。你会找到你的虫子的。科林,谢谢。输入和驱动程序不为空。我还是犯了同样的错误。科林,谢谢你。输入和驱动程序不为空。但我还是犯了同样的错误。