2010-10-27 4 views
0
List<PersonsInChargeEntity> picList = new List<PersonsInChargeEntity>(); 
    List<ClientEntity> clientList = new List<ClientEntity>(); 

    var returnList = (from PersonsInChargeEntity pic in picList 
        join ClientEntity client in clientList 
        on pic.ClientNumber equals client.ClientNumber 
        select new { ClientNumber = pic.ClientNumber, CompanyName = client.CompanyNameFull, AICGroupID = pic.AICStaffGroupID, RPStaffID = pic.RPStaffID, MPStaffID = pic.MPStaffID, CSPStaffID = pic.CSPStaffID, EQCRStaffID = pic.EQCRStaffID }).ToList<PicList>(); 

Как я могу преобразовать свой returnList в список < entity>? ниже мой класс для объекта.возвращение LINQ to list <entity>?

public class PicList 
{ 
    int _ClientNumber = 0; 
    string _CompanyName = ""; 
    int _AICGroupID = 0; 
    int _RPStaffID = 0; 
    int _MPStaffID = 0; 
    int _CSPStaffID = 0; 
    int _EQCRStaffID = 0; 

    public PicList() 
    { 
    } 
    public PicList(int ClientNumber, string CompanyName, int AICGroupID, int RPStaffID, int MPStaffID, int CSPStaffID, int EQCRStaffID) 
    { 
     _ClientNumber = ClientNumber; 
     _CompanyName = CompanyName; 
     _AICGroupID = AICGroupID; 
     _RPStaffID = RPStaffID; 
     _MPStaffID = MPStaffID; 
     _CSPStaffID = CSPStaffID; 
     _EQCRStaffID = EQCRStaffID; 
    } 

    public int ClientNumber 
    { 
     get { return _ClientNumber; } 
     set { _ClientNumber = value; } 
    } 
    public string CompanyName 
    { 
     get { return _CompanyName; } 
     set { _CompanyName = value.Trim(); } 

    } 
    public int AICGroupID 
    { 
     get { return _AICGroupID; } 
     set { _AICGroupID = value; } 
    } 
    public int RPStaffID 
    { 
     get { return _RPStaffID; } 
     set { _RPStaffID = value; } 
    } 
    public int MPStaffID 
    { 
     get { return _MPStaffID; } 
     set { _MPStaffID = value; } 
    } 
    public int CSPStaffID 
    { 
     get { return _CSPStaffID; } 
     set { _CSPStaffID = value; } 
    } 
    public int EQCRStaffID 
    { 
     get { return _EQCRStaffID; } 
     set { _EQCRStaffID = value; } 
    } 

} 

ответ

5

Из моего понимания вашей проблемы, вам требуется результат запроса быть List<PicList>. Для достижения этой цели, вам нужно select экземпляр конкретного PicList типа в запросе LINQ, а не анонимного типа , C# не обычно поддержка утка-типирования (за некоторыми исключениями); в частности, невозможно передать один тип другому только потому, что два типа имеют похожие объявления свойств.

Я также отмечаю, что PicList имеет открытый конструктор без параметров и что все свойства имеют публичные сеттеры. Так что это должно работать нормально:

var returnList = (from PersonsInChargeEntity pic in picList 
        join ClientEntity client in clientList 
        on pic.ClientNumber equals client.ClientNumber 
        select new PicList // no longer an anonymous type 
        { 
        ClientNumber = pic.ClientNumber, 
        CompanyName = client.CompanyNameFull, 
        AICGroupID = pic.AICStaffGroupID, 
        RPStaffID = pic.RPStaffID, 
        MPStaffID = pic.MPStaffID, 
        CSPStaffID = pic.CSPStaffID, 
        EQCRStaffID = pic.EQCRStaffID 
        }).ToList(); 
    //ToList<PicList>() is fine but redundant: the generic type argument is inferred. 
+0

спасибо, у меня возникли проблемы с пониманием linq, но теперь это яснее. –

2

вы создаете anonymous type здесь, которые не могут быть литыми, как вы уже пробовали.

попробовать что-то вроде:

var returnList = (from PersonsInChargeEntity pic in picList 
        join ClientEntity client in clientList 
        on pic.ClientNumber equals client.ClientNumber 
        select new PicList 
        { 
        ClientNumber = pic.ClientNumber, 
        CompanyName = pic.CompanyNameFull, 
        AICGroupID = pic.AICStaffGroupID, 
        RPStaffID = pic.RPStaffID, 
        MPStaffID = pic.MPStaffID, 
        CSPStaffID = pic.CSPStaffID, 
        EQCRStaffID = pic.EQCRStaffID 
        })/*.ToList()*/; 
+0

спасибо, он работает –

0
personList = picp.GetPersonsInChargeList(); // got 6000++ records 
    clientList = (List<ClientEntity>)cp.GetClientList(); // got 5000 ++ records after step thru 
    //PicList sdf; 
    var returnList = (from PersonsInChargeEntity pic in personList 
        join ClientEntity client in clientList 
        on pic.ClientNumber equals client.ClientNumber 
        select new PicList { ClientNumber = pic.ClientNumber, CompanyName = client.CompanyNameFull, AICGroupID = pic.AICStaffGroupID, RPStaffID = pic.RPStaffID, 
        MPStaffID = pic.MPStaffID, CSPStaffID = pic.CSPStaffID, EQCRStaffID = pic.EQCRStaffID }).ToList(); 

но returnList оленьей кожи есть какие-либо запись.

0

Хммм, Вы можете сделать это очень простой метод Линке этот

List<ClientEntity> clientList = new List<ClientEntity>(); 

var returnList = (from PersonsInChargeEntity pic in picList 
       join ClientEntity client in clientList 
       on pic.ClientNumber equals client.ClientNumber 
       select pic ; 

Еогеасп (вар пункт в картинке) { ClientEntity OBJ = новый ClientEntity();

obj.ClientNumber = item.ClientNumber 

...... ...... clientList.add (OBJ);

return clientlist;

Я надеюсь, что это сработает и для вас