仅使用值返回逗号分隔的字符串

时间:2014-05-16 05:16:33

标签: c# linq anonymous-class

我有以下几乎完美无缺的代码,但它返回一个逗号分隔的名称值对的字符串,如下所示。

{ 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 ,但我收到错误,我是否必须使用替换,还是有简单方法?

1 个答案:

答案 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);