2009-05-28 39 views
26

Vì vậy, nói rằng tôi có một bộ sưu tập của BloopsLINQ Chọn một số thuộc tính vào đối tượng khác?

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

Sau đó, tôi có một lớp học của giải Mâm xôi vàng

Class Razzie 
    Public FirstName 
    Public LastName 
End Class 

Có thể sử dụng LINQ để chọn FirstName và LastName ra khỏi tất cả các Bloops trong bộ sưu tập của Bloops và trả về bộ sưu tập Razzies? Hay tôi bị giới hạn trong For-Loop để thực hiện công việc của mình?

Để xóa mọi sự nhầm lẫn, VB hoặc C# sẽ thực hiện. Điều này cũng có thể dẫn đến việc tôi đặt câu hỏi (Điều gì về việc sử dụng mệnh đề "Where").

Trả lời

29

này nên thực hiện công việc:

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

Và nếu bạn muốn chuyển đổi kết quả từ IEnumerable<Bloop> (những gì các truy vấn trả về LINQ) để một mảng hoặc List<Bloop>, chỉ cần thêm một cuộc gọi đến ToArray() hoặc ToList() phương pháp mở rộng tương ứng.

Chỉnh sửa: Sửa mã để mã hiện có cú pháp VB.NET 9 hợp lệ.

+0

không chấp nhận một trong hai ngôn ngữ khi tôi thành thạo cả hai –

+1

Đủ công bằng. Tôi chỉ nghĩ rằng bạn thích nó trong VB.NET vì đó là những gì các mẫu mã của bạn đã nhập. :) – Noldorin

+0

bạn có thể sửa bài viết của bạn thành cú pháp C# đúng, vì nó không đúng cú pháp vb. theo cách đó tôi có thể hiểu rõ hơn những gì đang diễn ra. –

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# là một trong các thẻ được liệt kê trong câu hỏi. – KClough

0

Chuyển đổi từ một loại thành khác có thể được thực hiện bằng cách sử dụng Enumerable.Select

Trong thực tế, có một sample từ 101 mẫu LINQ cho thấy một truy vấn chuyển ints thành chuỗi.

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"); 
Các vấn đề liên quan