2011-06-23 74 views
1

不知道如何写一个好的标题这个问题... :)如何从两个值创建列表?

我是新来的LINQ和不知道该用什么语法,对于这个问题我有

class MainClass() 
{ 
    string MainKey {get;set;} 
    string MainName {get;set;} 
    List<SmallObject> MainList {get;set} 
} 

class SmallObject() 
{ 
    string SmallKey {get;set} 
} 

的Linq :

myTable的4个字段(字段1,字段2,字段3,字段4)

var mainQuery = (from v from myTable 
       select v)  

var myQuery = (from v in mainQuery 
       select new MainClass() 
       { 
       MainKey = v.Field1, 
       MainName = v.Field2, 
       MainList = #whats the correct syntax here?# 
       }) 

包含的部分标有#whats正确的语法这里#是什么?我的问题。 我想将v.Field3和v.Field4作为项目添加到MainClass中的MainList对象,但我不知道该怎么做。

如果有人可以帮忙,我很高兴。

回答

4

您可以创建一个List<T>(或任何其他集合)和添加项目与一个collection initializer

MainList = new List<SmallObject> { v.Field3, v.Field4 } 

更新:

由于Field3Field4是字符串,你只是做你已经做了什么来使它们变成SmallObject s:

MainList = new List<SmallObject> 
{ 
    new SmallObject { SmallKey = v.Field3 }, 
    new SmallObject { SmallKey = v.Field4 }, 
} 

或者,您可以添加一个带有字符串参数的SmallObject构造函数,并使用它像new SmallObject(v.Field3)

+0

这是有点不清楚,他可能也试图做一些像'MainList = new {Field3PropLabel = v.Field3,Field4PropLabel = v.Field4}' – asawyer

+0

这样会工作吗? v.Field3是字符串类型,不是SmallObject类型 – hightow

+0

如果您想使用列表来存储它们,则不需要匹配该类型。如果你是在匿名课之后,它会工作得很好。 – asawyer

0

不太确定我是否正确理解你。但对我来说了以下工作:

var myTable = new [] { 
      new {Field1 = "a", Field2 = "b", Field3 = "c", Field4 = "d"}, 
      new {Field1 = "a", Field2 = "b", Field3 = "c", Field4 = "d"} 
     }; 



     var myQuery = (from v in myTable 
         select new MainClass() 
         { 
         MainKey = v.Field1, 
         MainName = v.Field2, 
         MainList = new List<SmallObject>{ 
          new SmallObject {SmallKey = v.Field3}, 
          new SmallObject {SmallKey = v.Field4}, 
         } 
         }); 

更改为MyQuery充满了2个对象(MainClass),同时具有Mainlist,每个containting 2项(SmallObject)。

顺便说一句,实在看不出下面一行是什么:

var mainQuery = (from v from myTable 
      select v) 

但正如我所说的,也许我不理解你正确

GL!

相关问题