Linq 林氏;实体框架:连接空值的问题
我有一个名为TradeNo的INT字段,它可能包含空值。要求在下拉列表中显示括号中的“合同Id”和“交易编号”,如果“交易编号”为空,则显示N/ALinq 林氏;实体框架:连接空值的问题,linq,entity-framework,Linq,Entity Framework,我有一个名为TradeNo的INT字段,它可能包含空值。要求在下拉列表中显示括号中的“合同Id”和“交易编号”,如果“交易编号”为空,则显示N/A Example: 44444 (2222) 55555 ( N/A ) 以下是我认为有效的方法。这是我返回SelectList的函数 public IEnumerable<SelectListItem> GetContractsBySupplierDropDown(string supplier) { var result =
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");
}
据我所知,显示的错误意味着EF正在尝试将ToString转换为数据库函数?不幸的是,您不能在来自数据库的数字字段中使用
ToString
作为一种变通方法,您可以在执行此操作之前将转换为列表
,这样内容就会存储在内存中
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");
}
public IEnumerable GetContractsbySupplier下拉列表(字符串供应商)
{
var query=来自context.Contracts中的c
其中c.Supplier==供应商
orderby c.constractd
选择新的{
c、 收缩,
c、 贸易号,
};
var result=来自query.ToList()中的c
选择新{
Text=c.construcd.ToString()+”(“+
(c.TradeNo.HasValue?
c、 TradeNo.Value.ToString():
“不适用”)+
" )",
值=c.d
};
返回新的SelectList(结果、“文本”、“值”);
}
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");
}