将字符串值映射到属性' c#中的值

时间:2017-08-14 15:14:22

标签: c# arrays function properties mapping

我是c#的新手,我有一个问题

我有这样的班级模型:

 public class SDView
    {
        public int ViewPK { get; set; }
        public string Code { get; set; }
        public string Name { get; set; }
        public string ConceptOrder { get; set; } 
    }

最后一个属性,ConceptOrder包含一串数字,每个数字都需要映射到不同的属性值...

示例:

成为ConceptOrder =" 1,2,3,5,4"

  public class Item
        {
            public string Warehouse { get; set; } //concept 1
            public string Commodity { get; set; } //concept 2
            public string Variety { get; set; }   //concept 3
            public string Packstyle { get; set; } //concept 4
            public string Size { get; set; }      //concept 5
        }

我需要做的是编写一个返回的方法或函数(基于上面的例子)

" Warehouse01 BellPepper Green JUMBO 7x1"

ConceptOrder可以是任何顺序,但每个数字都映射到某个属性(1总是仓库...... 2总是商品)

显然这个例子是简化的

我无法理解这个

任何帮助将不胜感激!

修改

我正在尝试做的事情,是,我有带有属性的类模型:

SDView类上的属性ConceptOrder包含必须在字符串属性中显示这些属性的顺序

所以我需要一个函数/方法,我可以传递一个ConceptOrder(" 2,3,1,4,5和#34;)并返回一个格式化的字符串......

public class Item
        {
            public string Warehouse { get; set; } //concept 1
            public string Commodity { get; set; } //concept 2
            public string Variety { get; set; }   //concept 3
            public string Packstyle { get; set; } //concept 4
            public string Size { get; set; }      //concept 5

            public string GetProductFromView(string conceptOrder)
           {

           ...

          return "CommodityPropValue VarietyPropValue WarehousePropValue.. etc"

}}

2 个答案:

答案 0 :(得分:0)

ConceptValue处理每个不同的属性,ConceptValues将为ConceptOrder中的每个值获取ConceptValue,并将它们放在一个字符串中,每个值之间都有一个空格。

fileName = System.getenv("LAMBDA_TASK_ROOT")  + "/application-main.properties";

使用...进行测试

public string ConceptValues(string conceptOrder)
{
    var split = conceptOrder.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);

    var nums = split.Select(s => Int32.Parse(s.Trim()));

    return nums.Select(n => ConceptValue(n))
        .Aggregate((acc, s) => string.Format("{0} {1}", acc, s));
}

public string ConceptValue(int concept)
{
    switch (conceptOrder)
    {
        case 1:
            return Warehouse;
        case 2:
            return Commodity;
        // etc...
        default:
            throw new ArgumentException("Unhandled Concept", "concept");
    }
}

答案 1 :(得分:0)

因此,在课程Item中,你有一个像这样的方法

public string GetProductFromView(string conceptOrder)
{
    int[] ConceptOrder = conceptOrder.Split(',').Select(x=>Convert.ToInt32(x)).ToArray();
    string[] Properties = new string[] {Warehouse,Commodity,Variety,Packstyle,Size};
    return string.Join(" ", ConceptOrder.Select(x=>Properties[x]));
}