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 respuestas
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"
} );
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('|');
Simplemente puede ponerlo dentro de un string[]
como este:
KeyValues = new string[] { key }
O incluso formato más corto:
KeyValues = new [] { key }
Nuevas preguntas
c#
C # (pronunciado "see sharp") es un lenguaje de programación multi-paradigma de alto nivel, estáticamente tipado desarrollado por Microsoft. El código C # generalmente se dirige a la familia de herramientas y tiempos de ejecución .NET de Microsoft, que incluyen .NET Framework, .NET Core y Xamarin, entre otros. Use esta etiqueta para preguntas sobre el código escrito en las especificaciones formales de C # o C #.