【问题标题】:Class associations and lists类关联和列表
【发布时间】:2011-03-11 19:56:06
【问题描述】:

我有一点 C# 问题。我有两个类 ClassA 和 ClassB 以这种方式定义:

public class ClassA
{
    private ClassB b;
    ClassB B;
    {
        get { return b; }
        set { b = value; }
    }
}

public class ClassB
{
    /* some stuff */
}

如您所见,ClassA 有一个 ClassB 的实例。

问题是,从 ClassA 实例列表中,我想访问相应 ClassB 实例的列表。我想应该是这样的:

IList<ClassA> listA = ...;
IList<ClassB> listB = listA.???.B;

解决方案可能很明显,但我自己无法弄清楚。

任何帮助将不胜感激!

【问题讨论】:

  • 您运行的是哪个 c# 版本?例如,您是否有权访问 LINQ?如果是这样,请参阅我的答案。
  • 我确实可以访问 LINQ,并且我正在使用 .NET 3.5

标签: c# .net mapping


【解决方案1】:

你可以使用 LINQ 来做

IList<ClassB> listB = listA.Select(a => a.B).ToList();

【讨论】:

    【解决方案2】:

    使用 List.ConvertAll():

    List<ClassA> listA = ...;
    List<ClassB> listB = listA.ConvertAll(item => item.B);
    

    【讨论】:

    • 只是有点吹毛求疵,但 ConvertAll 只是 List 类的标准方法,而不是扩展方法:D
    【解决方案3】:

    您可以通过以下方式之一使用 LINQ to Objects 轻松完成此操作:

    var instancesOfClassB = from a in listOfClassA
                            select a.B;
    
    var instancesOfClassB = listOfClassA.Select(a => a.B);
    

    【讨论】:

      【解决方案4】:

      你可以这样做:

      IList<B> listB = listA.ConvertAll(a => a.B);
      

      这很简单,说明了它的作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多