2013-01-03 73 views
0

我需要根据外键值将一些Linq查询结果返回到List对象。这样做的语法是什么?我是使用Linq的新手,所以下面是我迄今为止最好的猜测。我收到错误的。哪里()“条款”,指出“名称‘PT’在目前情况下不存在。任何帮助,将不胜感激!将Linq查询结果返回到List对象(基于条件)

 List<AgentProductTraining> productTraining = new List<AgentProductTraining>(); 

     var prodCodes = productTraining.Select(pt => new[] 
                 { 
                  pt.ProductCode, 
                  pt.NoteId, 
                  pt.ControlId 
                 }) 
                 .Where(pt.CourseCode == course.CourseCode); 

回答

1

你会需要切换的位置其中,选择如果你使用扩展方法:

var prodCodes = productTraining.Where(pt => pt.CourseCode == course.CourseCode) 
           .Select(pt => new SomeRandomType 
                 { 
                  ProductCode = pt.ProductCode, 
                  NoteId = pt.NoteId, 
                  ControlId = pt.ControlId 
                 }); 

我还建议,因为你可以在上面看到,说你为select语句创建一个类型,这样你不依靠匿名类型你应该放入你知道的所有东西的对象类型中。

另外,如果CourseCode是一个字符串,那应该是pt.CourseCode.Equals(course.CourseCode)

+0

Hm ...任何时候我定义SomeRandomType(我尝试过字符串和AgentProductTraining到目前为止),它立即开始在ProductCode,NoteId和ControlId上引发错误。该消息说:'ProductCode'在当前上下文中不存在,'NoteId'不......等。 – NealR

+0

这是因为您需要创建一个新的对象类来存放这些字段。通过这样做,您将避免使用匿名类型的危险。 – IronMan84

+0

有没有办法做到这一点,而不创建一个新的对象类?我只需要这个程序的这一部分,所以看起来有点麻烦,只为此打破一个新的类库。 – NealR