2017-06-03 116 views
1

版本的OData的:OData是否支持Enum類型的groupby?

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Microsoft.AspNet.OData" version="5.9.1" targetFramework="net45" /> 
    <package id="Microsoft.OData.Core" version="6.15.0" targetFramework="net45" /> 
    <package id="Microsoft.OData.Edm" version="6.15.0" targetFramework="net45" /> 
    <package id="Microsoft.Spatial" version="6.15.0" targetFramework="net45" /> 
</packages> 

枚舉顏色:

public enum Color 
{ 
    Red = 1, 
    Green = 2, 
    Blue = 3 
} 

車輛類:

public class Vehicle 
{ 
    public Guid VehicleId { get; set; } 
    [JsonConverter(typeof(StringEnumConverter))] 
    public Color? Color { get; set; } 
} 

的Web API端點:

[HttpGet] 
[Route("vehicles")] 
public IHttpActionResult GetVehicles(ODataQueryOptions<Vehicle> options) 
{ 
    var query = dbContext.Vehicle.Select(x => new Vehicle 
     { 
      VehicleId = x.VehicleId, // guid type for x.VehicleId 
      Color = (Color?)x.ColorId // nullable int type for x.ColorId 
     }); 

    var odataQuery = options.ApplyTo(query) as IQueryable<object>; 

    return Ok(odataQuery.AsEnumerable<Vehicle>()); 
} 

方案1:

嘗試http://localhost:1000/vehicles $應用= GROUPBY((vehicleId)),它的工作?

方案2:

但隨着http://localhost:1000/vehicles $應用= GROUPBY((彩色)),這將引發錯誤消息( 「exceptionMessage」: 「參數類型不匹配」)。

+1

我有同樣的問題,使用ODATA-v4 – avrahamcool

回答

1

下面是odata.org google group的答案。

從規範透視枚舉類型是原始類型,所以 它們可以在GROUPBY使用。

但是,這並不能保證您的首選工具集已經支持這一點 。

相關問題