Назначьте значение массива внутри инициализатора объекта в C#
У меня есть класс, как показано ниже.
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; }
}
Я получаю некоторые строковые значения, разделенные '|' в массив строк и перебирая его следующим образом.
string[] test = Convert.ToString(values[5]).Split('|');
foreach (string key in test)
{
purgeRecord = new PurgeRecord()
{
KeyValues = key,
IsValid = true,
FileName = "XYZ"
};
lstPurgeRecords.Add(purgeRecord);
}
Но я получаю сообщение об ошибке, так как не могу неявно преобразовать строку в строку []. Я пробовал много способов и пробовал гуглить, но безуспешно.
Пожалуйста помоги.
3 ответа
Решение
KeyValues
тип собственности string
массив, когда вы пытаетесь инициализировать PurgeRecord
Например, вы пытаетесь вставить string
в string[]
,
Вот что вы должны сделать:
//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);
}
Есть хороший способ сделать Linq
тоже:
lstPurgeRecords = values[ 5 ]
.ToString()
.Split( '|' )
.Select( key => new PurgeRecord
{
KeyValues = new[] { key },
IsValid = true,
FileName = "XYZ"
} );
Вы можете просто положить его внутрь string[]
как это:
KeyValues = new string[] { key }
Или даже более короткий формат:
KeyValues = new [] { key }
Split
сам возвращается String[]
Разбивает строку на подстроки, основанные на символах в массиве.
Его синтаксис
public string[] Split(params char[] separator)
Просто обновите свой код
от
string[] test = Convert.ToString(values[5]).Split('|');
с
string[] test = values[5]).Split('|');