簡體   English   中英

轉換清單 <int> 串,反之亦然?

[英]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 ) );

在由機器而不是人類讀取的字符串之間進行轉換時,重要的是要避免使用ToStringParse而不使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM