Объединить перечисление со строкой в ​​запросе linq

Я разрабатываю приложение WinForm на С# с первым подходом EF Code. У меня проблема, когда я делаю запрос linq, где пытаюсь объединить Enum со строкой. Ошибка заключается в следующем:

Невозможно привести тип Entities.VoucherType к типу System.Object. LINQ to Entities поддерживает только приведение примитивов EDM или типов перечисления

Затем я показываю запрос Enum, POCO Entities и linq:

public enum VoucherType
{
    FAC = 1,
    BV,
    TKT,
    GR
}
public partial class Order
{
    public int OrderId { get; set; }
    public VoucherType VoucherType { get; set; }
    public string VoucherSeries { get; set; }
    public string VoucherNumber { get; set; }
}
public partial class Income
{
    public int IncomeId { get; set; }
    public int OrderId { get; set; }
    public decimal IncomeAmount { get; set; }
}
var q = from income in context.Incomes
        join order in context.Orders on income.OrderId equals order.OrderId
        select new
        {
            Voucher = order.VoucherType + "-" + order.VoucherSeries + "-" + order.VoucherNumber,
            Amount = income.IncomeAmount
        };

person cristianqr    schedule 19.06.2014    source источник
comment
Entity Framework 4 не поддерживает перечисления. EF5 добавил эту поддержку.   -  person Sam Leach    schedule 19.06.2014
comment
@SamLeach Я использую EF6.1   -  person cristianqr    schedule 19.06.2014
comment
Хорошо, у вас была отмечена версия 4. Я изменил его на версию 6.   -  person Sam Leach    schedule 20.06.2014


Ответы (1)


Вы можете попробовать это:

var q = (from income in context.Incomes
         join order in context.Orders 
         on income.OrderId equals order.OrderId
         select new 
         {
             VoucherType = order.VoucherType,
             VoucherSeries = order.VoucherSeries,
             VoucherNumber = order.VoucherNumber,
             IncomeAmount = income.IncomeAmout
         }).AsEnumerable()
           .Select(x=> new
           {
               Voucher = x.VoucherType + "-" + x.VoucherSeries + "-" +x.VoucherNumber,
               Amount = x.IncomeAmount
           };
person Christos    schedule 19.06.2014