LINQ2OBJECTS: Помощь с запросом.Создание списка на лету - PullRequest
0 голосов
/ 28 марта 2011

У меня есть класс, созданный из XML-схемы.И у меня есть следующий запрос, запрос возвращает также как анонимный метод

    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 Ответ

2 голосов
/ 28 марта 2011

Это дает вам то, что вы хотите

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()
                                  };
...