C# 转换列表中的项目<&燃气轮机;连接并格式化的字符串?

C# 转换列表中的项目<&燃气轮机;连接并格式化的字符串?,c#,.net,C#,.net,鉴于: protected class Marker { public string Name { get; set; } public string Lat { get; set; } public string Long { get; set; } }; List<Marker> allMarkers = new List<Marker>(); allMarkers.Add(new Marker{N

鉴于:

    protected class Marker { 
        public string Name { get; set; }
        public string Lat { get; set; }
        public string Long { get; set; } 
    };

List<Marker> allMarkers = new List<Marker>();
allMarkers.Add(new Marker{Name="Bondi Beach", Lat = "-33.890542", Long = "151.274856"});
allMarkers.Add(new Marker{Name="Coogee Beach", Lat = "-33.923036", Long = "151.259052"});
allMarkers.Add(new Marker{Name="Cronulla Beach", Lat = "-34.028249", Long = "151.157507"});
allMarkers.Add(new Marker{Name="Manly Beach", Lat = "-33.800101", Long = "151.287478"});
allMarkers.Add(new Marker{Name="Maroubra Beach", Lat = "-33.950198", Long = "151.259302"});

是否有一种线性的方式来做这件事,类似于String,Con(),或者我必须通过列表上的FACHACH手动使用它,使用String Buudio.AppDeFalm()/

< P>如果<代码>标记> /代码>是您自己的类,请考虑重写<代码> toString()/<代码>方法,以显示您所做的每一行。然后,您可以使用一个简单的

String.Join()
将其组合在一起

protected class Marker
{
    public string Name { get; set; }
    public string Lat { get; set; }
    public string Long { get; set; }
    public override string ToString()
    {
        return String.Format("['{0}', {1}, {2}]", Name, Lat, Long);
    }
};
然后,使用:

List<Marker> allMarkers = new List<Marker>();
allMarkers.Add(new Marker { Name = "Bondi Beach", Lat = "-33.890542", Long = "151.274856" });
allMarkers.Add(new Marker { Name = "Coogee Beach", Lat = "-33.923036", Long = "151.259052" });
allMarkers.Add(new Marker { Name = "Cronulla Beach", Lat = "-34.028249", Long = "151.157507" });
allMarkers.Add(new Marker { Name = "Manly Beach", Lat = "-33.800101", Long = "151.287478" });
allMarkers.Add(new Marker { Name = "Maroubra Beach", Lat = "-33.950198", Long = "151.259302" });
Console.Write(String.Join(",\n", allMarkers));

你可能会注意到这更好(或者更糟),取决于你的用例。

< P>如果<代码>标记> /Cuth>是你自己的类,考虑重写<代码> toStReg()/Cux>方法,以显示你所做的每一行。然后,您可以使用一个简单的
String.Join()
将其组合在一起

protected class Marker
{
    public string Name { get; set; }
    public string Lat { get; set; }
    public string Long { get; set; }
    public override string ToString()
    {
        return String.Format("['{0}', {1}, {2}]", Name, Lat, Long);
    }
};
然后,使用:

List<Marker> allMarkers = new List<Marker>();
allMarkers.Add(new Marker { Name = "Bondi Beach", Lat = "-33.890542", Long = "151.274856" });
allMarkers.Add(new Marker { Name = "Coogee Beach", Lat = "-33.923036", Long = "151.259052" });
allMarkers.Add(new Marker { Name = "Cronulla Beach", Lat = "-34.028249", Long = "151.157507" });
allMarkers.Add(new Marker { Name = "Manly Beach", Lat = "-33.800101", Long = "151.287478" });
allMarkers.Add(new Marker { Name = "Maroubra Beach", Lat = "-33.950198", Long = "151.259302" });
Console.Write(String.Join(",\n", allMarkers));

您可能会注意到这更好(或更差),这取决于您的用例。

通过使用扩展方法,您可以执行类似的操作

static class Extensions
{
   static string ToStringAll(this List<Marker> markers)
   {
      string all = "";

      foreach (var marker in markers)
      {
         all += marker.ToString() + ",";
      }

      return all.Trim(',');
   }
}

通过使用扩展方法,您可以执行以下操作

static class Extensions
{
   static string ToStringAll(this List<Marker> markers)
   {
      string all = "";

      foreach (var marker in markers)
      {
         all += marker.ToString() + ",";
      }

      return all.Trim(',');
   }
}

您可以使用String.Join和一个简单的LINQ
Select
将它们投影到您想要的格式

   allMarkers.Select(m => "['" + m.Name + "', " + m.Lat + ", " + m.Long + "]")

<强>但您可能需要考虑使用<代码>数据DATACONUTS/<代码>序列化来将数据序列化到JSON,而不是创建自己的序列化对象表示法。

< P>可以使用Stras.Access和一个简单的LINQ <代码>选择将它们按您希望的格式……< /P>
   allMarkers.Select(m => "['" + m.Name + "', " + m.Lat + ", " + m.Long + "]")

<强>但您可能想考虑使用<代码>数据DATACONTAUTS/<代码>序列化来将数据序列化到JSON,而不是创建自己的序列化对象符号。

或写一个扩展方法,如果不是您的分类有用,请注意这是使用.NET 4只加载<>代码> String。3.5将需要将列表转换为字符串数组。此外,集合初始值设定项允许您在某种程度上减少使用示例数据启动此列表的仪式。感谢Marc,巧合的是,这是我的第一个4.0项目,因此它对我有效。:)或者为它编写一个扩展方法,如果它不是您的Classic。请注意,这是使用仅.NET 4重载的
string.Join
,这很有用。3.5将需要将列表转换为字符串数组。此外,集合初始值设定项允许您在某种程度上减少使用示例数据启动此列表的仪式。感谢Marc,巧合的是,这是我的第一个4.0项目,因此它对我有效。:)如果有很多标记,这将扼杀性能。字符串在C#中是不可变的。如果有很多标记,这将破坏性能。字符串在C#.string.Join(“,\n”,allMarkers.Select(m=>”[““+m.Name+”,“+m.Lat+”,“+m.Long+”])中是不可变的;我喜欢它。string.Join(“,\n”,allMarkers.Select(m=>”[““+m.Name+”,“+m.Lat+”,“+m.Long+”)));我喜欢。