2009-05-28 37 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"); 
相关问题