【问题标题】:Linq Select Certain Properties Into Another Object?Linq将某些属性选择到另一个对象中?
【发布时间】:2010-10-29 17:22:02
【问题描述】:

假设我有一个 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”子句怎么样)的问题。

【问题讨论】:

    标签: c# .net vb.net linq .net-3.5


    【解决方案1】:
    List<Bloop> myBloops = new List<Bloops>;
    //populate myRazzies
    List<Razzie> myRazzies = myBloops.Select(x => new Razzie() { FirstName = x.FirstName, LastName = x.LastName}).ToList();
    

    【讨论】:

    • C# 是问题中列出的标签之一。
    【解决方案2】:
            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");
    

    【讨论】:

      【解决方案3】:
      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);
          }
      }
      

      【讨论】:

        【解决方案4】:

        这应该可以完成工作:

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

        如果您想将结果从IEnumerable&lt;Bloop&gt;(LINQ 查询返回的内容)转换为数组或List&lt;Bloop&gt;,只需分别调用ToArray()ToList() 扩展方法即可。

        编辑:更正了代码,使其现在具有有效的 VB.NET 9 语法。

        【讨论】:

        • 很公平。我只是认为您更喜欢在 VB.NET 中使用它,因为这就是您的代码示例所在。:)
        • 您能否将您的帖子编辑为正确的 c# 语法,因为它不是正确的 vb 语法。这样我可以更好地了解发生了什么。
        • @Noldorin 回复:其他评论...谢谢。确实我看错了。出于某种原因,我读到他有两个系列。
        • @Russ:啊,那些该死的下划线。完全忘记了他们!现在应该可以正常编译了。
        • 在 VB.NET 10 中不再需要这些(隐式行继续)万岁!
        【解决方案5】:

        使用Enumerable.Select可以完成从一种类型到另一种类型的转换

        事实上,来自 101 个 linq 样本的 sample 显示了将整数转换为字符串的查询。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-22
          • 1970-01-01
          • 2016-06-03
          • 1970-01-01
          • 1970-01-01
          • 2013-03-18
          • 1970-01-01
          • 2020-06-22
          相关资源
          最近更新 更多