在linq '选择新对象{中连接字符串
本文关键字:对象 字符串 连接 linq 新对象 选择 | 更新日期: 2023-09-27 18:17:22
我需要在LINQ select语句中将两列连接在一起,像这样:
var result = (from i in db.MyTable
blah blah ...
select new MyObject
{
Id = i.MyTableId,
ReportedByName = ub.FirstName + ' ' + ub.LastName
}).First();
正如我所想的,ub.FirstName + ' ' + ub.LastName
抛出了一个错误。我该如何使用这个语法呢?
谢谢!
您当前正在连接一个具有char
值的字符串,而您想要的是连接字符串。字符串+
运算符期望另一个string
而不是char
。使用" "
代替:
ReportedByName = ub.FirstName + " " + ub.LastName
当然还有其他方法:
string.Format
或c# 6.0的语法糖插值ReportedByName = string.Format("{0} {1}", ub.FirstName, ub.LastName) ReportedByName = $"{ub.FirstName} {ub.LastName}" //syntactic sugar of option above
string.join
(如果你有更多的值,我会选择这个)ReportedByName = string.Join(" ", ub.FirstName, ub.LastName)
string.Concat
ReportedByName = string.Concat(ub.FirstName, " ", ub.LastName)
因为你是在一个linq实体,而不是对象在内存的string.Join
(因此也字符串插值)和string.Format
可能不工作,如果你是在一个linq被翻译成sql查询。如果您想使用这些选项,首先将项检索到内存(使用ToList()
/AsEnumerable()
),然后使用它们连接字符串。请看Jon的回答
如果你使用c# 6,你可以这样做:
= $"{ub.FirstName} {ub.LastName}"
我认为字符串插值是最容易阅读的