在c#中的对象初始值设定项中分配数组值

时间:2018-01-17 13:48:41

标签: c# object-initializers

我有一个课程如下。

// The data store containing the list of Country
var country = Ext.create('Ext.data.Store', {
    fields: ['iso3', 'id'],
    proxy: {
        type: 'ajax',
        url: 'countryList.json',
        reader: {
            type: 'json',
            rootProperty: 'countrylist'
        }
    },
    autoLoad: true
});

// Create form  with the combo box, attached to the country data store
Ext.create('Ext.form.Panel', {
    title: 'Country List Example with ComboBox',
    bodyPadding: 10,
    items: [{
        xtype: 'combo',
        fieldLabel: 'Choose Country',
        store: country,
        queryMode: 'local',
        displayField: 'iso3',
        valueField: 'id',
        listeners: {
            select: function (field, record) {
                Ext.Msg.alert('Success', `Selected country <br> iso3 : <b>${record.get('iso3')}</b> <br> id : <b>${record.get('id')}</b>`);
            }
        }
    }],
    renderTo: Ext.getBody(),
    buttons: [{
        text: 'Get Combo Value/Record on button click',
        handler: function () {
            var record = this.up('form').down('combo').getSelectedRecord();
            if (record) {
                Ext.Msg.alert('Success', `Selected country <br> iso3 : <b>${record.get('iso3')}</b> <br> id : <b>${record.get('id')}</b>`)
            } else {
                Ext.Msg.alert('Info', 'Please select contry first.. :)');
            }
        }
    }]
});

我得到一些由&#39; |&#39;分隔的字符串值进入字符串数组并按如下方式删除它。

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; }
}

但是我收到了一个错误,因为无法将字符串转换为字符串[]。我尝试了很多方法,并尝试谷歌搜索,但没有运气。

请帮忙。

3 个答案:

答案 0 :(得分:0)

Split本身会返回String[]

  

将字符串拆分为基于数组中字符的子字符串。

语法

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

只需更新您的代码

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

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

答案 1 :(得分:0)

你可以简单地把它放在string[]这样的内容中:

KeyValues = new string[] { key }

甚至更短的格式:

KeyValues = new [] { key }

答案 2 :(得分:0)

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"
                    } );