6
var ps = dbContext.SplLedgers.Select(p => new SplLedgerModel
            {
                Name = p.Name,
                VoucherType = Convert.ToString(((JIMS.VoucherTypes)p.VoucherType))
        });

我收到以下异常,代码有什么问题。

JIMS.VoucherType 是一个枚举

+       $exception  {"LINQ to Entities does not recognize the method 'System.String ToString(System.Object)' method, and this method cannot be translated into a store expression."}    System.Exception {System.NotSupportedException}
4

1 回答 1

9

您的代码基本上是试图在数据库中找到 Convert.ToString() 方法并且可以理解地失败。

您可以绕过它,例如通过确保查询在选择之前执行,例如

var ps = dbContext.SplLedgers.Select(p => new  
    { 
         Name = p.Name, 
         VoucherType = p.VoucherType
    }).ToList().Select(p => new SplLedgerModel( 
    { 
         Name = p.Name, 
         VoucherType = Convert.ToString(((JIMS.VoucherTypes)p.VoucherType)) 
    }); 
于 2012-09-28T14:44:34.353 回答