如何从两个值创建列表?

时间:2011-06-23 12:51:31

标签: c# linq list

不确定如何为这个问题写一个好的标题......:)

我是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个字符串字段(Field1,Field2,Field3,Field4)

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对象,但我不知道该怎么做。

如果有人可以提供帮助,我很高兴。

2 个答案:

答案 0 :(得分: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)一样使用它。

答案 1 :(得分: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,每个包含2个项目(SmallObject)。

顺便说一下,不要真正看到以下行代码:

var mainQuery = (from v from myTable
             select v) 

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

GL!