2012-10-19 51 views
0

在我的应用程序中,我想要获取数据集中特定列中的数据并将其转换为逗号分隔的字符串。我已经使用下面的代码。但我认为这会使应用程序非常慢。从特定列中检索数据集值到字符串

string ids = ""; 
if (datatable1.Rows.Count > 0)   
{ 
     foreach (DataRow dr in datatable1.Rows) 
     { 
      ids += dr["id"].ToString() + " ,"; 
     } 

} 

任何人都可以提供一些改进代码的建议。

+1

为什么你认为它使应用程序的速度缩短呢?另外,请注意,您可以删除'if(datatable1.Rows.Count> 0)'检查,因为它不是必需的(如果没有行,则不会输入foreach循环!) –

+2

有多少行? StringBuilder可能会更好? – DaveHogan

+0

@DaveHogan:可能以千为单位 – Vijaychandar

回答

3

如果您的连接过多,请使用StringBuilder

StringBuilder ids = new StringBuilder(); 
if (datatable1.Rows.Count > 0)   
{ 
     foreach (DataRow dr in datatable1.Rows) 
     { 
      ids.Append(dr["id"].ToString() + ","); 
     } 

} 

或者您可以使用string.Join

string ids = string.Join(",",datatable1.AsEnumerable() 
             .Select(r=> r.Field<int>("ID"))); 
+0

哪个会更快:使用foreach或string.join? – Vijaychandar

+0

@Vijay,他们两人都使用[StopWatch](http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx)。 – Habib

+0

@Vijay:两者都使用循环,你应该(自己)提高可读性或可维护性。 –