2010-10-27 87 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轉換爲列表<實體?下面是我的實體班。將LINQ返回列表<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有一個公共參數構造函數,並且所有的屬性都有public setter。所以這應該很好地工作:

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有些麻煩,但現在比較清楚了。 – 2010-10-27 06:24:02

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

謝謝隊友,它的工作原理 – 2010-10-27 06:24:21

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 ; 

的foreach(PIC的VAR項目) { ClientEntity的obj =新ClientEntity();

obj.ClientNumber = item.ClientNumber 

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

}

return clientlist;

我希望這樣也能爲你運行