我们如何将数据从一个列表传输到另一个列表

时间:2016-03-21 14:58:20

标签: c# linq

我有Code,其中我有两个名为ClassA和ClassB的Class,我在这两个类中有Number和Status两个filed类, 我创建了一个名为listA和listB的两个List, 我需要查询它,只有Status属性必须使用linq / lambda表达式从listB转移到listA。 我怎样才能做到这一点?? 提前致谢, 这是我的代码片段

class ClassA
{
    public int Number { get; set; }
    public bool Status { get; set; }
}

class ClassB
{
    public int Number { get; set; }
    public bool Status { get; set; }
}


 static void Main(string[] args)
 {
    List<ClassA> listA = new List<ClassA> ();
    List<ClassB> listB = new List<ClassB>();
    ClassA a = new ClassA();
    a.Number = 1; a.Status = false;
    ClassA a2 = new ClassA();
    a2.Number = 1; a2.Status = true;
    ClassA a3 = new ClassA();
    a3.Number = 1; a3.Status = true;
    ClassA a4 = new ClassA();
    a4.Number = 1; a4.Status = true;

    ClassB b1 = new ClassB();
    b1.Number = 2;b1.Status = true;
    ClassB b2 = new ClassB();
    b2.Number = 3; b2.Status = false;
    ClassB b3 = new ClassB();
    b3.Number = 2; b3.Status = true;
    ClassB b4 = new ClassB();
    b4.Number = 3; b4.Status = false;
    listA.Add(a);
    listA.Add(a2);
    listA.Add(a3);
    listA.Add(a4);
    listB.Add(b1);
    listB.Add(b2);
    listB.Add(b3);
    listB.Add(b4);

}

3 个答案:

答案 0 :(得分:2)

我会使用Essential Objects在一次调用中将两个类映射到一起。这种情况就是它的设计目标。您需要做的就是创建一个映射配置,然后映射这两个类。这是一个非常简单但功能强大的工具。例如像这样:

var config = new MapperConfiguration(cfg => cfg.CreateMap<ClassA, ClassB>()
);

var mapper = config.CreateMapper();

List<ClassA> listA = new List<ClassA>();
var listClassB = mapper.Map<List<ClassB>>(listA);

答案 1 :(得分:0)

如果您使用Linq,则非常简单:

var classb = from a in listA select new ClassB() { Status = a.Status };

这将返回IEnumerable<ClassB>,但您可以使用ToList将您的收藏集作为List

答案 2 :(得分:0)

尝试以下代码:

 static void Main(string[] args)
        {

            List<ClassA> listA = new List<ClassA> ();
            List<ClassB> listB = new List<ClassB>();
            ClassA a = new ClassA();
            a.Number = 1; a.Status = false;
            ClassA a2 = new ClassA();
            a2.Number = 1; a2.Status = true;
            ClassA a3 = new ClassA();
            a3.Number = 1; a3.Status = true;
            ClassA a4 = new ClassA();
            a4.Number = 1; a4.Status = true;

            ClassB b1 = new ClassB();
            b1.Number = 2;b1.Status = true;
            ClassB b2 = new ClassB();
            b2.Number = 3; b2.Status = false;
            ClassB b3 = new ClassB();
            b3.Number = 2; b3.Status = true;
            ClassB b4 = new ClassB();
            b4.Number = 3; b4.Status = false;
            listA.Add(a);
            listA.Add(a2);
            listA.Add(a3);
            listA.Add(a4);
            listB.Add(b1);
            listB.Add(b2);
            listB.Add(b3);
            listB.Add(b4);
            listA.AddRange(listB.Select(o => new ClassA() { Status = o.Status }));
        }