我有这两个类
public class BuyEstimateResult
{
public string SubTitle { get; set; }
public string Value { get; set; }
public string Formulae { get; set; }
}
public class SellerReportClass
{
public string Entityname { get; set; }
public double EntityAmt { get; set; }
public string Formulae { get; set; }
}
我必须使它们应该转换为
public class KeyValue
{
public string key {get;set;}
public string value {get;set;}
}
如果我传递BuyEstimateResult,其SubTitle应为key,Value应为KeyValue Class的值,如果我传递SellerReportClass,则Entityname应为key,EntityAmt应为Value
任何想法如何才能完成
注意:我将获得两个类的列表
答案 0 :(得分:11)
您可以使用C#中的implicit
运算符将其转换为您想要的KeyValue
- http://msdn.microsoft.com/en-us/library/z5z9kes2(v=vs.110).aspx
public static implicit operator KeyValue(BuyEstimateResult ber)
{
return new KeyValue { Key = ber.SubTitle, Value = ber.Value }
}
修改
更具体地说明如何实现这个:
public class BuyEstimateResult
{
public string SubTitle { get; set; }
public string Value { get; set; }
public string Formulae { get; set; }
public static implicit operator KeyValue(BuyEstimateResult ber)
{
return new KeyValue {Key = ber.SubTitle, Value = ber.Value};
}
}
public class SellerReportClass
{
public string Entityname { get; set; }
public double EntityAmt { get; set; }
public string Formulae { get; set; }
public static implicit operator KeyValue(SellerReportClass sell)
{
return new KeyValue { Key = sell.Entityname, Value = sell.EntityAmt.ToString(CultureInfo.InvariantCulture)};
}
}
public class KeyValue
{
public string Key { get; set; }
public string Value { get; set; }
}
public class Program
{
static void Main()
{
var listB = new List<BuyEstimateResult>
{
new BuyEstimateResult {SubTitle = "BER1", Value = "BER1_VALUE"},
new BuyEstimateResult {SubTitle = "BER2", Value = "BER2_VALUE"}
};
var listS = new List<SellerReportClass>
{
new SellerReportClass {Entityname = "SELL1", EntityAmt = 1.0},
new SellerReportClass {Entityname = "SELL2", EntityAmt = 2.5}
};
foreach (KeyValue kv in listB)
Console.WriteLine(kv.Key + ":" + kv.Value);
foreach (KeyValue kv in listS)
Console.WriteLine(kv.Key + ":" + kv.Value);
}
}
要从两个不同的列表中获取KeyValue
个对象的单个列表,您可以执行以下操作:
var KeyValueList = listB.ConvertAll(i => (KeyValue) i);
KeyValueList.AddRange(listS.ConvertAll(i => (KeyValue) i));