所以说我有一系列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”条款)。
答案 0 :(得分:43)
List<Bloop> myBloops = new List<Bloops>;
//populate myRazzies
List<Razzie> myRazzies = myBloops.Select(x => new Razzie() { FirstName = x.FirstName, LastName = x.LastName}).ToList();
答案 1 :(得分:29)
这应该做的工作:
Dim results = From item In bloops _
Select New Razzie() With _
{ _
.FirstName = item.FirstName, _
.LastName = item.LastName _
}
如果要将结果从IEnumerable<Bloop>
(LINQ查询返回的内容)转换为数组或List<Bloop>
,只需将调用附加到ToArray()
或ToList()
分别是扩展方法。
编辑:更正了代码,使其现在具有有效的VB.NET 9语法。
答案 2 :(得分:2)
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);
}
}
答案 3 :(得分:0)
事实上,101个linq样本中有一个sample,它显示了一个将ints转换为字符串的查询。
答案 4 :(得分:0)
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");