在 Linq 查询中连接字符串
本文关键字:连接 字符串 查询 Linq | 更新日期: 2023-09-27 18:36:49
我有一个数据库调用,它返回了一个对象。我使用 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();
我现在想将线路租金添加到关税名称中,显示如下所示:
我的资费 - 12.99
当我尝试这样做时,尽管我可以正常进行此更改:
Text = c.TariffName + " - ",
但是当我尝试添加行租赁时,我遇到了 linq 无法识别 ToString() 的问题。我需要它看起来像:
Text = c.TariffName + " - " + c.LineRental.ToString(),
我知道 linq 无法识别读取 LINQ 到 Entities 的 ToString() 方法,它无法识别方法"System.String ToString()"方法,并且此方法无法转换为存储表达式,但是鉴于我无法在 linq 查询之前将其设置为字符串,我该如何更改它?
首先将查询结果转换为列表,然后使用 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 转换为 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
});