将数据从一个列表复制到另一个列表,同时在C#中格式化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数据从一个列表复制到另一个列表,同时在C#中格式化相关的知识,希望对你有一定的参考价值。
我有一个如下所示的课程:
public class BidCostModel {
public string Code { get; set; }
public decimal? Month1 { get; set; }
public decimal? Month2 { get; set; }
public decimal? Month3 { get; set; }
}
我创建了一个列表并使用EF填充了一些数据:
List<BidCostModel> list1 = new List<BidCostModel>();
fillOperation(data);
我有另一个具有类似属性名称但数据类型不同的类
public class BidCostModelFormatted {
public string Code { get; set; }
public string Month1 { get; set; }
public string Month2 { get; set; }
public string Month3 { get; set; }
}
List<BidCostModelFormatted> list2 = new List<BidCostModelFormatted>();
我想将数据从list1
复制到list2
,同时添加千位分隔符。是否有一个映射工具或我可以使用的东西,而不用foreach
循环来添加千位分隔符,同时将数据复制到list2
。
答案
不需要依赖一些外部工具。即使使用工具,您也需要定义“格式化”类并配置工具以格式化某些属性。
创建一个负责“格式化”值的类
public class BidCostFormatted
{
private readonly BidCostModel _model;
public string Code => _model.Code;
public string Month1 => _model.Month1.ForView();
public string Month2 => _model.Month2.ForView();
public string Month3 => _model.Month3.ForView();
public BidCostFormatted(BidCostModel model) => _model = model;
}
public static class Extensions
{
public static string ForView(this decimal? value)
{
if (value.HasValue)
{
return value.Value.ToString("N");
}
return string.Empty;
}
}
然后格式化将是容易和可维护的
var formattedBidCosts =
bidCosts.Select(cost => new BidCostFormatted(cost)).ToList();
另一答案
也许用ToString("N")
格式化原始值并将其附加到新列表:
list2.AddRange(
list1.Select(
a => {
b = new BidCostModelFormatted();
b.Code = a.Code;
b.Month1 = a.Month1.ToString("N");
b.Month2 = a.Month2.ToString("N");
b.Month3 = a.Month3.ToString("N");
return b;
}
)
);
另一答案
如果你想只用两行,那么将第一个列表序列化为JSON,然后将它想到第二个类的列表,它就可以了。
以上是关于将数据从一个列表复制到另一个列表,同时在C#中格式化的主要内容,如果未能解决你的问题,请参考以下文章