webentwicklung-frage-antwort-db.com.de

Linq Bestimmte Eigenschaften für ein anderes Objekt auswählen?

Angenommen, ich habe eine Sammlung von Bloops

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

Dann habe ich eine Klasse von Razzies

Class Razzie
  Public FirstName
  Public LastName
End Class

Ist es mit Linq möglich, den Vor- und Nachnamen aus allen Bloops in der Bloops-Sammlung auszuwählen und eine Sammlung von Razzies zurückzugeben? Oder bin ich auf einen For-Loop beschränkt, um meine Arbeit zu erledigen?

Um Verwirrung zu beseitigen, reicht entweder VB oder C # aus. Auch dies wird wahrscheinlich dazu führen, dass ich die Frage stelle (Was ist mit der Verwendung einer "Where" -Klausel).

26
Russ Bradberry

Dies sollte die Arbeit erledigen:

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

Und wenn Sie das Ergebnis von IEnumerable<Bloop> (was die LINQ-Abfrage zurückgibt) in ein Array oder List<Bloop> konvertieren möchten, fügen Sie einfach einen Aufruf an die Erweiterungsmethoden ToArray() bzw. ToList() an.

Bearbeiten: Der Code wurde korrigiert, sodass er jetzt eine gültige VB.NET 9-Syntax hat.

29
Noldorin
List<Bloop> myBloops = new List<Bloops>;
//populate myRazzies
List<Razzie> myRazzies = myBloops.Select(x => new Razzie() { FirstName = x.FirstName, LastName = x.LastName}).ToList();
42
KClough
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);
    }
}
2
nologo
        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
Md Saidul Karim

Die Umwandlung von einem Typ in einen anderen kann mit Enumerable.Select durchgeführt werden.

Tatsächlich gibt es ein sample von 101 linq samples, das eine Abfrage zeigt, die ints in Strings transformiert.

0
Amy B