Tengo una clase como la siguiente.

public class PurgeRecord
{
    public int Index { get; set; }
    public string Source { get; set; }
    public int PurgeFileID { get; set; }
    public string AuthorisationID { get; set; }
    public string RecordSystem { get; set; }
    public string KeyName { get; set; }
    public string[] KeyValues { get; set; }
    public bool IsValid { get; set; }
    public string Action { get; set; }
    public string ErrorDetail { get; set; }
    public string FileName { get; set; }
}

Estoy obteniendo algunos valores de cadena separados por '|' en una matriz de cadenas y recorrerla de la siguiente manera.

string[] test = Convert.ToString(values[5]).Split('|');
foreach (string key in test)
{
    purgeRecord = new PurgeRecord()
    {
        KeyValues = key,
        IsValid = true,
        FileName = "XYZ"
    };
    lstPurgeRecords.Add(purgeRecord);
}

Pero recibo un error en la clave ya que no puedo convertir cadena a cadena [] implícitamente. Lo intenté de muchas maneras y también busqué en Google, pero no tuve suerte.

Por favor, ayúdeme.

-3
Abhijit 17 ene. 2018 a las 16:48

3 respuestas

La mejor respuesta

El tipo de propiedad KeyValues es la matriz string, cuando intenta inicializar una instancia PurgeRecord intenta insertar un string en un string[].

Entonces esto es lo que debes hacer:

//Every object instance in C# have the function 'ToString'.
string[] test = values[5].ToString().Split('|');

foreach (string key in test)
{
    purgeRecord = new PurgeRecord()
    {
        //Create an array to insert in the values, but probably this is the KeyName
        KeyValues = new[] { key },
        IsValid = true,
        FileName = "XYZ"
    };
    lstPurgeRecords.Add(purgeRecord);
}

También hay una buena manera de hacerlo con Linq:

lstPurgeRecords = values[ 5 ]
                    .ToString()
                    .Split( '|' )
                    .Select( key => new PurgeRecord 
                    {
                        KeyValues = new[] { key },
                        IsValid = true,
                        FileName = "XYZ"
                    } );
0
Lucas 17 ene. 2018 a las 14:03

Split en sí mismo devuelve String[]

Divide una cadena en subcadenas que se basan en los caracteres de una matriz.

Su sintaxis

public string[] Split(params char[] separator)

Simplemente actualice su código

De

string[] test = Convert.ToString(values[5]).Split('|');

Con

string[] test = values[5]).Split('|');
0
Ehsan Ullah Nazir 17 ene. 2018 a las 13:56

Simplemente puede ponerlo dentro de un string[] como este:

KeyValues = new string[] { key }

O incluso formato más corto:

KeyValues = new [] { key }
0
DavidG 17 ene. 2018 a las 13:50
48302698