LINQ2OBJECTS:帮助查询。即时创建列表

时间:2011-03-28 16:05:52

标签: c# linq xsd linq-to-objects

我有一个从XML Schema创建的类。我有以下查询,查询返回为匿名方法

    var test1 = from t in test.Test
                   join p in test.Params on t.Test_Id equals p.Test_Id
                   join p1 in test.Param on p.Params_Id equals p1.Params_Id
                   select new { Name = t.Name, Params = p1};

它返回4条记录,因为我有2个测试,每个测试有2个参数。

我使用匿名类型进行测试。我注意到在上面的例子中,Params实际上是ParamRow类型。

我想将它放入我自己的类中。

public class MyOwnClass
{
    public string Name { get; set; }

    public IList<Param> Params { get; set; }
}

我的Param是这样的,它包含在ILIST中

public class Param
{
    public string Name { get; set; }

    public bool Enabled { get; set; }
}

我遇到了在新课程中创建新“PARAM”并指定名称和已启用的问题。

 Name should be assigned to p1.Name

 Enabled should be assigned to p1.Enabled

所以我最终需要的是2个记录返回,每个记录为2个参数作为ILIST用它。

困惑: - )

有人可以帮忙吗?

因此我最终应该

 Test1
    Params
       Param1
       Param2

 Test2
    Params
       Param1
       Param2

我希望这有道理吗?

1 个答案:

答案 0 :(得分:2)

这可以为您提供所需的内容

var test1 = from t in test.Test
            select new MyOwnClass { 
                                   Name = t.Name, 
                                   Params = (from p in test.Params
                                             join p1 in test.Param on p.Params_Id equals p1.ParamsId
                                             where p.Test_Id == t.Test_Id
                                             select new Param {
                                                               Name = p1.Name,
                                                               Enabled = p1.Enabled
                                                              }).ToList()
                                  };