在Linq查询中连接字符串

在Linq查询中连接字符串

问题描述:

我有一个数据库调用,返回一个对象。我使用LINQ来施放对象我多么希望它在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的字符串查询?

+0

您可以使用循环来填充结果对象。在循环体中,你可以使用'Text = c.TariffName +“ - ”+ c.LineRental.ToString()' –

转换的查询结果列表中的第一,然后使用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 
          }); 

linq尝试在数据库查询级别执行select语句时发生了什么,它不知道如何将您的.Select lambda转换为select部分sql语句。

您可以做的最简单的事情是先查询必填字段,然后在查询中调用.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 
}); 
+1

你正在把整个表加载到内存中,只是因为你不知道如何连接两者。 –