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).
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.
List<Bloop> myBloops = new List<Bloops>;
//populate myRazzies
List<Razzie> myRazzies = myBloops.Select(x => new Razzie() { FirstName = x.FirstName, LastName = x.LastName}).ToList();
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);
}
}
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");
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.