c#lambda属性映射到字符串

时间:2018-10-26 10:52:56

标签: c# lambda

我在类似于以下内容的字典中有数据:

“键1”:“数据1”,

“键2”:“数据2”,

“键3”:“数据3”,

和一个班级

public class OuputClass
{
    public string Field1 { get; set; }
    public string Field2 { get; set; }
}

使用lambda,我希望能够轻松地为每个属性映射键名称并创建传入的类的新实例。

var result = MapData<Class1>(x => x.Field1 = "key 1", x.Field2 = "key 3")

在MapData函数中,我希望能够处理在函数中传递的2个属性,并返回带有属性集的OutputClass的新实例。 (Field1 =“数据1”,Field2 =“数据3”)

我已经研究过使用Func和IQueryable,但似乎无法使其正常工作

感谢您的帮助。

下面是ToObject函数的示例:

 public static T ToObject<T>(Func<T, IQueryable> mapper) where T : new()
    {
        //code to create the class (more complex then this)
        var data = new T();

        //if mapper needed then loop through properties specified and use string mapped to each property
        foreach (var item in .....)
        {
            //code to get value needed to set property
            var mappedstring = ...... //get string mapped to property
            var newpropvalue = ...... //use mapped string to access dictionary value;

            //set property of instance
            data.... = newpropvalue;
        }

        return data;
    }

1 个答案:

答案 0 :(得分:0)

您可以创建这样的方法:

    public T MapData<T>(Func<T> func)
    {
        var res = func();
        return res;
    }

并调用这样的方法

    var dic= new Dictionary<string, string>();

    //Fill Dictionary

    MapData<OuputClass>(() => new OuputClass { Field1 = dic["Key 1"] , Field2 = dic["Key 2"] });

希望对您有帮助