Union in entity framework

后端 未结 2 544
旧巷少年郎
旧巷少年郎 2020-12-16 13:27

I have two tables: Vehicles and Workers.

Vehicle(Id, Number)
Workers(Id, Name, ContractorVehicleNumber)

I would like to write lambda que

相关标签:
2条回答
  • 2020-12-16 14:14

    You cannot construct mapped entity type in projection. Your former example will work only if you create a new special type used for projection:

    public class VehicleResult
    {
        public string Number { get; set; }
        ... // If you don't need more then one column you can use simple type instead of custom class
    }
    

    And your method will look like:

    public IQueryable<VehicleResult> Get(bool includeContractorVehicles)
    {
        IQueryable<VehicleResult> query = GetQuery().Select(v => new VehicleResult { ... });
    
        if (includeContractorVehicles == true)
        {
            WorkerRepository rep = new WorkerRepository();
            IQueryable<VehicleResult> contractorsVehicles = rep.GetWorkers().
                Select(x => new VehicleResult()
                {
                    Number = x.ContractorVehicleNumber
                });
            query = query.Union(contractorsVehicles);
        }
    
        return query;
    }  
    
    0 讨论(0)
  • 2020-12-16 14:22

    You cant create entities in the select statement. Try this instead:

    public class VehicleDTO
    {
      public int Id { get; set; }
      public int Number { get; set; }
    } 
    
    public IQueryable<VehicleDTO> Get(bool includeContractorVehicles)
    {
        var query = GetQuery().Select(x => new VehicleDTO(){ ID = c.ID, Number = c.Number });
    
        if (includeContractorVehicles)
        {
            WorkerRepository rep = new WorkerRepository();
            var contractorsVehicles = rep.GetWirkers().
                Select(x => new VehicleDTO(){ Number = x.ContractorVehicleNumber});
            query = query.Union(contractorsVehicles);
        }
    
        return query;
    } 
    

    Also are you sure you want a Union and not a Concat ?

    0 讨论(0)
提交回复
热议问题