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");