【问题标题】:How can i concat a string using lambda expression [closed]如何使用 lambda 表达式连接字符串 [关闭]
【发布时间】:2013-08-05 08:06:31
【问题描述】:

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

我是这样尝试的

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());
    }
}

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 嗯?不知道你想做什么。
  • 对于每个敷料,我希望它的敷料信息以逗号分隔的 orm 连接,并将其作为字符串返回。
  • 运行上面的代码会发生什么?
  • 您当前的解决方案有什么问题?
  • I.DressingInfo的类型是什么?它必须是一个字符串。如果是,则不需要ToArray(),因为string.Join() which takes an IEnumerable<string> parameter 过载。如果不是字符串,则需要使用.ToString() 或其他机制将其转换为字符串。

标签: c# string linq


【解决方案1】:

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()));

【讨论】:

    【解决方案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()

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

    【讨论】:

    • 您不必在 .NET 4.0 或更高版本中调用 .ToArray(),因为有 this convenient overload。事实上,您甚至不必致电 .ToString()
    • @p.s.w.g 谢谢!将其添加为通知。
    猜你喜欢
    • 2012-05-19
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多