如何使用lambda表达式连接字符串

时间:2013-08-05 08:06:32

标签: c# string linq

我有一个方法需要以逗号分隔的形式添加集合中的项目。 对于每个敷料项目,我希望它的敷料信息以逗号分隔的形式连接并将其作为字符串返回。但我这样做的方式失败了,并说参数不正确。

我正在尝试这样

private string GetAllFreeItemNames(CategoryType catType)
{
    if (this.DressingItems != null)
    {
        //var ls = FreeDressingItems;//.FindAll(I => I. == this.TypeName);
        return string.Join(",", this.DressingItems.Select(I => I.DressingInfo).ToArray());
    }
}

有些人可以帮助我。

2 个答案:

答案 0 :(得分:2)

 private string GetAllFreeItemNames(CategoryType catType)
{
  if (this.DressingItems != null)
  {
    //var ls = FreeDressingItems;//.FindAll(I => I. == this.TypeName);
    return string.Join(",", this.DressingItems.Select(I => I.DressingInfo.ToString()).ToArray());
  }
}

根据p.s.w.g的建议,您可以省略自.NET 4.0以来的ToArray()

注意:您必须覆盖ToString()类型的DressingInfo方法才能获得预期结果。

答案 1 :(得分:2)

DressingInfo必须是string

如果它是一个类,也许它有一些描述它的属性(例如,Name

return string.Join(",", this.DressingItems.Select(p => p.DressingInfo.Name).ToArray());

或更复杂的东西

return string.Join(",", this.DressingItems.Select(p => p.DressingInfo.Name + " " + p.DressingInfo.Colour).ToArray());

或者它可能超载ToString()

return string.Join(",", this.DressingItems.Select(p => p.DressingInfo.ToString()).ToArray());

请注意,从C#4.0开始,您不需要ToArray(),所以

return string.Join(",", this.DressingItems.Select(p => p.DressingInfo.Name));

return string.Join(",", this.DressingItems.Select(p => p.DressingInfo.Name + " " + p.DressingInfo.Colour));

return string.Join(",", this.DressingItems.Select(p => p.DressingInfo.ToString()));