不确定如何为这个问题写一个好的标题......:)
我是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对象,但我不知道该怎么做。
如果有人可以提供帮助,我很高兴。
答案 0 :(得分:4)
您可以创建List<T>
(或任何其他收藏集)并使用collection initializer向其添加项目:
MainList = new List<SmallObject> { v.Field3, v.Field4 }
<强>更新强>
由于Field3
和Field4
是字符串,您只需执行已经执行的操作即可将其转换为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!