我有一个db调用,它返回一个对象。我使用linq来投射那个我想要它的对象
var result = queryResult.OrderBy(c => c.TariffName)
.Take(count)
.Select(c => new
{
Text = c.TariffName,
Key = c.TariffId,
Price = c.LineRental
});
var list = result.ToList();
我现在想将线路租金添加到关税名称显示中,如下所示:
myTariff - 12.99
当我尝试这样做时虽然我可以做出这个改变:
Text = c.TariffName + " - ",
但是当我尝试添加线路租赁时,我遇到了linq无法识别ToString()的问题。我需要它看起来像:
Text = c.TariffName + " - " + c.LineRental.ToString(),
我知道linq不会通过阅读LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression来识别ToString()方法,但是如果我不能在linq查询之前将其设置为字符串,我该如何更改?< / p>
答案 0 :(得分:1)
首先将查询结果转换为列表,然后使用select
使toString
正常工作。
var result = queryResult.OrderBy(c => c.TariffName)
.Take(count);
var list = result.ToList().Select(c => new
{
Text = c.TariffName + " - " + c.LineRental.ToString(),
Key = c.TariffId,
Price = c.LineRental
});
答案 1 :(得分:-1)
linq尝试在数据库查询级别执行select语句时发生了什么,并且它不知道如何将.Select
lambda转换为sql语句的select
部分。
您可以做的最简单的事情是首先查询必填字段,在查询上调用.ToList()
以执行它并在此之后执行投影。
var result = queryResult.OrderBy(c => c.TariffName)
.Take(count)
.Select(c => new
{
Text = c.TariffName,
Key = c.TariffId,
Price = c.LineRental
});
var list = result.ToList().Select(c=>new {
Text = string.Format("{0} - {1}", c.Text, c.Price),
Key=Key,
Price=Price
});