C#检查列表的转换<;字符串>;是否可以使用string.Join创建单个字符串?
我有一个长度未定义的C#检查列表的转换<;字符串>;是否可以使用string.Join创建单个字符串?,c#,string,list,out-of-memory,type-conversion,C#,String,List,Out Of Memory,Type Conversion,我有一个长度未定义的列表,出于某种目的,我正在将整个列表转换为字符串,因此我想在转换之前检查它是否可能(它是否会抛出内存异常?),以便我可以处理那么多数据并在另一批中继续 样品 int drc = ImportConfiguration.Data.Count; List<string> queries = new List<string>() { }; //iterate over data row to generate query and execute it fo
列表
,出于某种目的,我正在将整个列表
转换为字符串
,因此我想在转换之前检查它是否可能(它是否会抛出内存异常?),以便我可以处理那么多数据并在另一批中继续
样品
int drc = ImportConfiguration.Data.Count;
List<string> queries = new List<string>() { };
//iterate over data row to generate query and execute it
for (int drn = 0; drn < drc; drn++)//drn stands to Data Row Number
{
queries.Add(Generate(ImportConfiguration.Data[drn], drn));
//SO HERE I WANT"S TO CHECK FOR SIZE
//IF IT"S NOT POSSIBLE IN NEXT ITERATION THAN I'LL EXECUTE IT RIGHT NOW
//AND EMPTIED LIST AGAIN FOR NEXT BATCH
if (drn == drc - 1 || drn % 5000 == 0)
{
SqlHelper.ExecuteNonQuery(connection, System.Data.CommandType.Text, String.Join(Environment.NewLine, queries));
queries = new List<string>() { };
}
}
int-drc=ImportConfiguration.Data.Count;
列表查询=新列表(){};
//迭代数据行以生成查询并执行它
for(int-drn=0;drn
您可以尝试:
List<string> theList;
try {
String allString = String.Join(",", theList.ToArray());
} catch (OutOfMemoryException e) {
// ... handle OutOfMemoryException exception (e)
}
你可以试试:
List<string> theList;
try {
String allString = String.Join(",", theList.ToArray());
} catch (OutOfMemoryException e) {
// ... handle OutOfMemoryException exception (e)
}
我不能说这是不可能的,但我认为更好的方法是进行连接并捕获任何异常:
try
{
var joined = string.Join(",", list);
}
catch(OutOfMemoryException)
{
// join failed, take action (log, notify user, etc.)
}
注意:如果发生异常,则需要考虑与使用列表和加入不同的方法。
< P>我不能说这是不可能的,但我认为更好的方法是加入和捕获任何异常:try
{
var joined = string.Join(",", list);
}
catch(OutOfMemoryException)
{
// join failed, take action (log, notify user, etc.)
}
注意:如果异常发生了,那么你需要考虑一个不同的方法,而不是使用一个列表并加入.< /p> ,因为你试图向SQL Server实例发送大量的文本,你可以使用它来将字符串写入流中,最小化构造要发送的数据所需的内存量。
由于您试图将大量文本发送到SQL Server实例,因此可以使用在执行时将字符串写入流,最小化构造要发送的数据所需的内存量。如何转换列表
?您打算如何处理字符串?将其写入磁盘?是的,您可以,看看这个@diiN\ux:using String.join您的列表中有多少项?因为如果列表可以毫无例外地保存它们,那么字符串也应该可以这样做(除非列表占用大约2GB的空间,否则字符串将如此,并且除非您以64位模式运行,否则应用程序无法在内存中存储这两个大对象)。您如何转换列表
?您打算如何处理字符串?将其写入磁盘?是的,您可以,看看这个@diiN\ux:using String.join您的列表中有多少项?因为如果列表可以毫无例外地保存它们,那么字符串也应该可以保存它们(除非列表占用大约2GB,因为这样字符串就可以保存,并且除非您以64位模式运行,否则应用程序无法在内存中存储这两个大对象)。我想在转换之前检查是否可以保存>这一切都在后面。。。我认为解决实际问题比失败更好。因为字符串是不可变的,我不能每次都转换。通常我在批处理操作,我需要这个检查,因为其他第三方API需要字符串作为输入。@Patrickhoffman捕获异常将是告诉我们字符串连接不是正确的方法的一步,如果它经常发生而不是“异常”。在这种情况下,整个设计都有问题。我们只能推测那是什么。我想在转换之前检查一下,这是可能的还是不可能的>这都是之后的事。。。我认为解决实际问题比失败更好。因为字符串是不可变的,我不能每次都转换。通常我在批处理操作,我需要这个检查,因为其他第三方API需要字符串作为输入。@Patrickhoffman捕获异常将是告诉我们字符串连接不是正确的方法的一步,如果它经常发生而不是“异常”。在这种情况下,整个设计都有问题。我们只能推测它是什么。因为字符串是不可变的,我不能每次都转换。因为字符串是不可变的,我不能每次都转换。