我需要在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
会抛出错误。我将如何使用此语法?
谢谢!
答案 0 :(得分:3)
您当前正在连接具有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)
ReportedByName = string.Concat(ub.FirstName, " ", ub.LastName)
因为你在 linq到实体而不是内存中的对象,string.Join
(因此也是字符串插值)和string.Format
可能不起作用,如果你在linq被翻译成sql查询。如果你想使用这些选项,首先将项目检索到内存(使用ToList()
/ AsEnumerable()
,然后使用它们来连接字符串。请参阅Jon的answer
答案 1 :(得分:2)
如果你使用C#6,你可以这样做:
= $"{ub.FirstName} {ub.LastName}"
我认为字符串插值是最容易阅读的。