Linq Выбрать определенные свойства в другом объекте? - PullRequest
26 голосов
/ 29 мая 2009

Так скажи, у меня есть коллекция Bloops

Class Bloop
  Public FirstName
  Public LastName
  Public Address
  Public Number
  Public OtherStuff
End Class

Тогда у меня есть класс Razzies

Class Razzie
  Public FirstName
  Public LastName
End Class

Можно ли с помощью Linq выбрать FirstName и LastName из всех Bloops в коллекции Bloops и вернуть коллекцию Razzies? Или я ограничен For-Loop для выполнения моей работы?

Чтобы устранить любую путаницу, подойдет VB или C #. Также это, вероятно, приведет к тому, что я задам вопрос (как насчет использования предложения «Где»).

Ответы [ 5 ]

43 голосов
/ 29 мая 2009
List<Bloop> myBloops = new List<Bloops>;
//populate myRazzies
List<Razzie> myRazzies = myBloops.Select(x => new Razzie() { FirstName = x.FirstName, LastName = x.LastName}).ToList();
29 голосов
/ 29 мая 2009

Это должно сделать работу:

Dim results = From item In bloops _
              Select New Razzie() With _
              { _
                  .FirstName = item.FirstName, _
                  .LastName = item.LastName _
              }

И если вы хотите преобразовать результат из IEnumerable<Bloop> (что возвращает запрос LINQ) в массив или List<Bloop>, просто добавьте вызов к методам расширения ToArray() или ToList() соответственно.

Редактировать: исправлен код, теперь он имеет действительный синтаксис VB.NET 9.

2 голосов
/ 06 мая 2011
public void Linq9()
{
    string[] words = { "aPPLE", "BlUeBeRrY", "cHeRry" };

    var upperLowerWords =
        from w in words
        select new { Upper = w.ToUpper(), Lower = w.ToLower() };

    foreach (var ul in upperLowerWords)
    {
        Console.WriteLine("Uppercase: {0}, Lowercase: {1}", ul.Upper, ul.Lower);
    }
}
0 голосов
/ 31 января 2013
        C# Sample - Thanks to earlier posters.

        List<clsObj> myList = new List<clsObj>();
        clsObj clsObjInstance = null;
        for (int i = 0; i < 10; i++)
        {
            clsObjInstance = new clsObj() { x = (i+1) % 3, a = "A" + i.ToString() };
            myList.Add(clsObjInstance);
        }

        List<int> extIntList = myList.Select(u => u.x).ToList();
        foreach (int u in extIntList)
            Console.Write(u.ToString() + "\t");

        List<string> extStringList = myList.Select(u => u.a).ToList();
        foreach (string u in extStringList)
            Console.Write(u + "\t");
0 голосов
/ 29 мая 2009

Преобразование из одного типа в другой можно выполнить с помощью Enumerable.Select

Фактически, есть выборка из 101 примера linq, которая показывает запрос, преобразующий целые числа в строки.

...