Linq选择某些属性到另一个对象?

所以说我有一系列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从Bloops集合中的所有Bloops中选择FirstName和LastName并返回一组Razzies? 或者我只限于For-Loop来完成我的工作?

要清除任何混淆,VB或C#都可以。 这也可能导致我提出问题(如何使用“Where”条款)。

这应该做的工作:

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

如果要将结果从IEnumerable (LINQ查询返回的内容)转换为数组或List ,只需分别调用ToArray()ToList()扩展方法。

编辑:更正了代码,使其现在具有有效的VB.NET 9语法。

 List myBloops = new List; //populate myRazzies List 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); } } 

可以使用Enumerable.Select完成从一种类型到另一种类型的转换

事实上,101个linq样本中有一个样本 ,它显示了一个将ints转换为字符串的查询。

  C# Sample - Thanks to earlier posters. List myList = new List(); 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 extIntList = myList.Select(u => ux).ToList(); foreach (int u in extIntList) Console.Write(u.ToString() + "\t"); List extStringList = myList.Select(u => ua).ToList(); foreach (string u in extStringList) Console.Write(u + "\t");