在 C# 中将 List<string> 转换为 List<object>

Convert List<string> to List<object> in C#

我有一个看起来像这样的字符串列表:

var rawData = new List<string>(){ "EUR/USD;123" , "EUR/GBP;321", "BTC/USD;2321"};

我有以下结构:

public class Data
{
    public string instrument { get; set; }
    public string positions { get; set; }
}

我的目标是得到一个字符串数据列表,在“;”上拆分char 并转换为对象列表。

var processedData = new List<Data>();

// processedData[0] ( instrument = EUR/USD, positions = 123 )
// processedData[1] ( instrument = EUR/GBP, positions = 321)
// processedData[2] ( instrument = BTC/USD, positions = 2321)

你知道我该怎么做吗?

foreach(var rawString in rawData){
  var split = rawString.Split(";");

  processedData.Add(new Data(){ 
    instruments = split[0],
    positions = split[1]
  });
}

您可以试试下面的代码

        private static void TestFunc()
    {
        var rawData = new List<string>() { "EUR/USD;123", "EUR/GBP;321", "BTC/USD;2321" };
        var processedData = new List<Data1>();

        foreach (var item in rawData)
        {
            var ins = item.Split(";")[0];
            var pos = item.Split(";")[1];
            processedData.Add(new Data1(ins, pos));
        }
    }

您可以尝试 Linqquery rawData:

var processedData = rawData
  .Select(item => item.Split(';'))
  .Select(items => new Data() {
     instrument = items[0],
     positions  = items[1]
   })
  .ToList(); 

你可以使用 linq

void Main()
{
    var rawData = new List<string>() { "EUR/USD;123", "EUR/GBP;321", "BTC/USD;2321" };

    rawData.Select(s => 
            new Data() {instrument= s.Split(";")[0],positions = (s.Split(";").Count() > 1) ? s.Split(";")[1] : null})
        .ToList().Dump();

}

public class Data
{
    public string instrument { get; set; }
    public string positions { get; set; }
}