首页 > 解决方案 > C#将字符串[]中的值插入模型列表

问题描述

我有这个类型模型列表,List<SequenceModel> listSequenceModel其中包含很少的属性,比如

public class SequenceModel
{
   public int Sequence1 {get;set;}
   public int Sequence2 {get;set;}
   public int Sequence3 {get;set;}
   public int OrderNr {get;set;}
}

我用“_”得到这个字符串,我拆分并创建了一个字符串列表

string[] szFilterParamsList2 = model.szFilterParams.Split('_');

此字符串的示例是“sequence1a_sequence1b_sequence1c”,但也可以是“_ sequence2b _”或“__sequence3”或“sequence1 __”(此处的空格是出于stackoverflow格式的原因,请忽略它们)。这意味着我可以得到一个包含三个不可为空元素的列表,或者它的任何可空变体,但至少一个元素必须有一个值。

List1: [0] = "123"
       [1] = "432"
       [2] = "575"
List2: [0] = "123"
       [1] = ""
       [2] = ""
List3: [0] = ""
       [1] = "98"
       [2] = ""

等等。

如何将这些值从字符串 [] 分配到List<SequenceModel> listSequenceModel? 对于空元素,我将分配硬编码 -1,因为值应该始终为正(如果不是 null)。

编辑: SequenceModel 用于另一个模型,如

public class BarcodeModel
{
   public int Product {get;set;}
   public decimal Price {get;set;}
   public List<SequenceModel> BarcodeSequence {get;set;}
}

标签: c#

解决方案


这可以帮助您使用 Linq 吗?

class Program
{
    static void Main(string[] args)
    {
        SplitStrings();
    }

    private static string sequence1 = "123_456_789";
    private static string sequence2 = "123__";
    private static string sequence3 = "__789";

    static void SplitStrings()
    {
        string[] szFilterParamsList1 = sequence1.Split('_').Select(s => string.IsNullOrEmpty(s) ? "-1" : s).ToArray();
        string[] szFilterParamsList2 = sequence2.Split('_').Select(s => string.IsNullOrEmpty(s) ? "-1" : s).ToArray();
        string[] szFilterParamsList3 = sequence3.Split('_').Select(s => string.IsNullOrEmpty(s) ? "-1" : s).ToArray();

        PrintArray(szFilterParamsList1);
        PrintArray(szFilterParamsList2);
        PrintArray(szFilterParamsList3);
    }

    static void PrintArray(string[] strArray)
    {
        foreach (string item in strArray)
        {
            Console.WriteLine(item);
        }
    }
}

输出:

123
456
789

123
-1
-1

-1
-1
789

推荐阅读