2009-05-28 78 views
26

所以說我有Bloops集合Linq選擇某些屬性到另一個對象?

Class Bloop 
    Public FirstName 
    Public LastName 
    Public Address 
    Public Number 
    Public OtherStuff 
End Class 

然後,我有一個類金酸梅

Class Razzie 
    Public FirstName 
    Public LastName 
End Class 

的是否有可能使用LINQ集合中選擇名字和姓氏了所有的Bloops的Bloops的集合並返回Razzies的集合?還是我僅限於一個For-Loop來完成我的工作?

要清除任何混淆,無論是VB或C#將做。這也許會導致我問(使用「where」子句怎麼樣)的問題。

回答

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語法。

+0

虐待接受任何語言,因爲我精通 – 2009-05-28 21:23:59

42
List<Bloop> myBloops = new List<Bloops>; 
//populate myRazzies 
List<Razzie> myRazzies = myBloops.Select(x => new Razzie() { FirstName = x.FirstName, LastName = x.LastName}).ToList(); 
+11

C#中的問題列出的標籤之一。 – KClough 2009-05-28 21:23:55

0

從一種類型的轉化爲另一種可通過使用Enumerable.Select

事實上來實現,有一個從sample 101 LINQ樣品,顯示了查詢轉化成整數字符串。

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); 
    } 
} 
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"); 
相關問題