连接两个不同类型的列表

时间:2016-04-09 09:56:03

标签: c# linq entity-framework-5

我有两个列表List<int> and List<SharedCroList>

 public class SharedCroList
    {
        public int CRO1Id { get; set; }
        public int CRO2Id { get; set; }
    }

  List<int> _cro1ReceiptEmpId = _receiptList                                                
                                .Where(r => r.StudentRegistration.StudentWalkInn.CROCount == 1)
                                .Select(r => r.StudentRegistration.StudentWalkInn.Employee1.Id)
                                 .ToList();

//if walkinn is shared one
List<SharedCroList> _cro2ReceiptEmpId = _receiptList
                                       .Where(r =>  r.StudentRegistration.StudentWalkInn.CROCount == 2)
                                       .Select(r => new SharedCroList
                                           {
                                               CRO1Id=r.StudentRegistration.StudentWalkInn.Employee1.Id,
                                               CRO2Id=r.StudentRegistration.StudentWalkInn.Employee2.Id
                                           })
                                           .ToList();

我的目标是将这两个列表连接成一个。我怎么能这样做? 我尝试了concatenate方法,但它不起作用?

1 个答案:

答案 0 :(得分:1)

你不能用2种不同的类型连接2个列表。 因此,您最好将第一个列表(_cro1ReceiptEmpId)转换为第二个列表,并使用AddRange()进行连接。

例如:

List <SharedCroList> temp = _cro1ReceiptEmpId.Select(x => new SharedCroList { CRO1Id = x, CRO2Id = 0 }).ToList();

List<SharedCroList> ConcatinatedList = _cro1ReceiptEmpId.AddRange(_cro2ReceiptEmpId);

编辑:
如果您希望输出成为列表,则需要将第二个列表转换为2个单独的List<int>

List<int> listOfCRO1Id = _cro2ReceiptEmpId.Select(x=>x.CRO1Id).ToList();
List<int> listOfCRO2Id = _cro2ReceiptEmpId.Select(x=>x.CRO2Id).ToList();

List<int> FinalList = listOfCRO1Id.Concat(listOfCRO2Id).Concat(_cro1ReceiptEmpId).ToList();