我有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);
}
答案 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 }));
}