LINQ 和 Entity Framework : issue with concatenating NULL value

标签 linq entity-framework

我有一个名为 TradeNo 的 INT 字段,它可能包含 NULL 值。要求在下拉列表中显示“合约Id”和括号内的“交易号”,如果“交易号”为空,则显示N/A。

Example:
44444 (2222)
55555 ( N/A )

这就是我认为可行的方法。这是我返回 SelectList 的函数

public IEnumerable<SelectListItem> GetContractsBySupplierDropDown(string supplier)
{
    var result = from c in context.Contracts 
                     where c.Supplier==supplier 
                     orderby c.ContractID
                     select new { 
                            Text = c.ContractID.ToString() + " (" + 
                                   (c.TradeNo.HasValue  ? 
                                       c.TradeNo.Value.ToString() : 
                                       " N/A ").ToString() + 
                                    " )", 
                            Value = c.ContractID };

    return new SelectList(result, "Text", "Value"); 
}

返回的错误是:

LINQ to Entities does not recognize the method 'System.String ToString()'
method, and this method cannot be translated into a store expression.

据我所知,显示的错误意味着 EF 正在尝试将 ToString 转换为数据库函数?

最佳答案

遗憾的是,您无法在来自数据库的数字字段中使用 ToString

作为解决方法,您可以在执行此操作之前强制转换 ToList,这样内容就位于内存中。

public IEnumerable<SelectListItem> GetContractsBySupplierDropDown(string supplier)
{
    var query =  from c in context.Contracts 
                 where c.Supplier==supplier 
                 orderby c.ContractID
                 select new {
                     c.ContractID,
                     c.TradeNo,

                 };
    var result = from c in query.ToList()
                 select new { 
                            Text = c.ContractID.ToString() + " (" + 
                                   (c.TradeNo.HasValue  ?
                                       c.TradeNo.Value.ToString() : 
                                       " N/A ") + 
                                    " )", 
                            Value = c.ContractID
                  };

    return new SelectList(result, "Text", "Value");
}

关于LINQ 和 Entity Framework : issue with concatenating NULL value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11631436/

相关文章:

c# - 使用 Lambda 获取不同的父项

c# - 是否可以处理 LINQ 查询中的异常?

c# - DELETE 语句冲突(ASP.NET MVC)

asp.net - Code First 启用迁移

c# - VB.NET 相当于这个 C# linq 类

c# - 如何转换以下 ino lambda 表达式(方法语法)?

entity-framework - 用于 DbGeography 的 JSON.Net JsonConverter

c# - EF 和存储过程返回动态结果

c# - LinqToCSV 和十进制全局化

c# - EF 关系映射与 Fluent API