Reputation: 10875
So say I have a collection of Bloops
Class Bloop
Public FirstName
Public LastName
Public Address
Public Number
Public OtherStuff
End Class
Then I have a class of Razzies
Class Razzie
Public FirstName
Public LastName
End Class
Is it possible using Linq to select the FirstName and LastName out of all the Bloops in the collection of Bloops and return a collection of Razzies? Or am i limited to a For-Loop to do my work?
To clear up any confusion, either VB or C# will do. Also this will probably lead to me asking the question of (What about using a "Where" clause).
Upvotes: 29
Views: 55908
Reputation: 2089
List<Bloop> myBloops = new List<Bloops>;
//populate myRazzies
List<Razzie> myRazzies = myBloops.Select(x => new Razzie() { FirstName = x.FirstName, LastName = x.LastName}).ToList();
Upvotes: 46
Reputation: 1
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");
Upvotes: 0
Reputation: 6328
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);
}
}
Upvotes: 2
Reputation: 147471
This should do the job:
Dim results = From item In bloops _
Select New Razzie() With _
{ _
.FirstName = item.FirstName, _
.LastName = item.LastName _
}
And if you want to convert the result from IEnumerable<Bloop>
(what the LINQ query returns) to an array or List<Bloop>
, just append a call to the ToArray()
or ToList()
extension methods respectively.
Edit: Corrected the code so that it now has valid VB.NET 9 syntax.
Upvotes: 29
Reputation: 110221
Transforming from one type into another can be accomplished by using Enumerable.Select
In fact, there is a sample from 101 linq samples that shows a query transforming ints into strings.
Upvotes: 0