我有以下几乎完美无缺的代码,但它返回一个逗号分隔的名称值对的字符串,如下所示。
{ stringName = Fred },
{ stringName = Monkey Bars },
{ stringName = Eagles }
我想要的是一个逗号分隔的字符串,仅包含值。
Fred, Monkey Bars, Eagles
我的代码
var liftsOpens =
(from li in db.Lifts
where li.LiftStatusMorning == "Open"
select new {li.LiftName}).ToList();
var lom = string.Join(",", liftsOpens);
我已尝试 liftsOpens.LiftName ,但我收到错误,我是否必须使用替换,还是有简单方法?
答案 0 :(得分:2)
在Linq语句中,您正在选择具有包含所需值的属性的匿名对象列表。因此,您要将匿名对象列表传递给string.Join()
但我想你想要枚举这些字符串(这里不需要匿名对象)......
你可以试试select li.LiftName
代替select new {li.LiftName}
。
如果您使用 .NET< 4.0 ,则需要调用.ToArray()
而不是.ToList()
才能使string.Join()
正常工作(请参阅MSDN:{ {3}} / .NET 3.5)
var liftsOpens =
(from li in db.Lifts
where li.LiftStatusMorning == "Open"
select li.LiftName) // <<== Select the string
.ToArray(); // <<== If .NET prior to 4.0
var lom = string.Join(",", liftsOpens);