[英]Convert List<int> to string and vice versa?
我已經找了幾個小時,找不到一個簡單的方法來做到這一點。 我有一個整數列表,需要將其存儲為字符串,以便可以將其發布到SQL Server。 然后,我需要稍后將其從字符串轉換回整數列表。 最簡單的方法是什么?
“用力,Linq!” -Obi Enum Kenobi
using System.Linq;
List<Int32> numbers = new List<Int32>()
{
1,
2,
3,
4
};
String asString = String
.Join(
", ",
numbers.Select( n => n.ToString( CultureInfo.InvariantCulture ) )
);
List<Int32> fromString = asString
.Split( "," )
.Select( c => Int32.Parse( c, CultureInfo.InvariantCulture ) );
在由機器而不是人類讀取的字符串之間進行轉換時,重要的是要避免使用ToString
和Parse
而不使用CultureInfo.InvariantCulture
以確保格式一致,無論用戶的區域性和格式設置如何。
FWIW,我有自己的幫助程序庫,它添加了此有用的擴展方法:
public static String ToStringInvariant<T>( this T value )
where T : IConvertible
{
return value.ToString( c, CultureInfo.InvariantCulture );
}
public static String StringJoin( this IEnumerable<String> source, String separator )
{
return String.Join( separator, source );
}
哪些東西整理起來:
String asString = numbers
.Select( n => n.ToStringInvariant() )
.StringJoin( ", " );
List<Int32> fromString = asString
.Split( "," )
.Select( c => Int32.Parse( c, CultureInfo.InvariantCulture ) );
字符串是您可以擁有的第二糟糕的格式。 只有二進制稍微差一點。 如果您有一個Int,請保持它為int。 除非確實需要,否則請勿將任何內容轉換為字符串(例如通過XML發送,使用IO)。 似乎不是這種情況。
我認為您要將它們轉換為字符串以構建數據庫查詢的唯一原因。 但是不要通過字符串連接來構建SQL查詢。 您只能通過這樣做的SQL注入 。 使用SQL參數。 如果這樣做,則無需將它們轉換為字符串。 SQL類和DBMS之間的某些事情將可靠地進行處理。
如果由於某種原因,SQL實際上將該數據存儲為NVARCHARS:替換該數據庫設計。 沒有理由讓數據庫將數字存儲為字符串。 在MS Access的這一方面,它都具有正確的“數字字段類型”。
最簡單的方法是每次創建一個新列表,並在迭代時投射每個項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.