返回LINQ列出<entity>?

Der*_*ong 0 c# linq

    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>();
Run Code Online (Sandbox Code Playgroud)

如何将returnList转换为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; }
    }

}
Run Code Online (Sandbox Code Playgroud)

Ani*_*Ani 5

根据我对您的问题的理解,您需要查询的结果是List<PicList>.为了实现这一点,您需要在LINQ查询select中使用具体PicList类型的实例而不是匿名类型.C#不正常支持鸭打字(有一些例外); 特别是,由于这两种类型碰巧具有相似的属性声明,因此无法将一种类型转换为另一种类型.

我还观察到它PicList有一个公共无参数构造函数,并且所有属性都有公共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.
Run Code Online (Sandbox Code Playgroud)