Назначьте значение массива внутри инициализатора объекта в 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('|');
Другие вопросы по тегам