Как создать список из двух значений? - PullRequest
1 голос
/ 23 июня 2011

Не был уверен, как написать хорошее название для этого вопроса ...:)

Я новичок в 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?#
               })

Часть, помеченная #, имеет правильный синтаксис здесь?проблема.Я хочу добавить v.Field3 и v.Field4 в качестве элементов к объекту MainList в MainClass, но я не знаю, как это сделать.

Я рад, если кто-нибудь может помочь.

Ответы [ 2 ]

4 голосов
/ 23 июня 2011

Вы можете создать List<T> (или любую другую коллекцию) и добавить в нее элементы с помощью инициализатора коллекции :

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).

0 голосов
/ 19 октября 2011

Не совсем уверен, правильно ли я вас понимаю.Но у меня работает следующее:

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!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...