在Linq查询中连接字符串

时间:2016-03-01 12:35:06

标签: c# linq

我有一个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>

2 个答案:

答案 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
});
相关问题