从c#列表中获取对象初始化语法
本文关键字:取对象 初始化 语法 获取 列表 | 更新日期: 2023-09-27 18:14:06
我有一个类型为employee的List。
public class Employee
{
public string Name { get; set; }
public int Id { get; set; }
public string Level { get; set; }
}
List<Employee> empList = new List<Employee>();
假设这个列表有10个项目,我想从这个列表中生成对象初始化代码。所以我应该得到这样一个字符串:
"Employee e = new Employee{Name: "A", Id:1, Level:1};
Employee e = new Employee{Name: "B", Id:2, Level:2};
Employee e = new Employee{Name: "C", Id:3, Level:1};
Employee e = new Employee{Name: "D", Id:4, Level:6};
Employee e = new Employee{Name: "E", Id:5, Level:2};
Employee e = new Employee{Name: "F", Id:6, Level:5}
Employee e = new Employee{Name: "G", Id:7, Level:4};
Employee e = new Employee{Name: "H", Id:8, Level:3};
Employee e = new Employee{Name: "I", Id:9, Level:1};
Employee e = new Employee{Name: "J", Id:10, Level:1}";
我这样做的原因是,我从数据库中获得记录列表,但它没有排序顺序(另一个属性)。我需要手动添加排序顺序到每个项目(硬代码)。因此,如果我不自动执行此操作,我将拥有的唯一其他选择将要求我手动创建对象(而不是从数据库获取值)并为每个对象添加SortOrder属性。
我不明白这段代码对你有什么帮助,但这里是:
String.Join(
Environment.NewLine,
empList.Select(x =>
$"Employee e = new Employee() {{ Name = '"{x.Name}'", Id = {x.Id}, Level = '"{x.Level}'" }};"));
我建议一个更好的选择是创建一个排序字典,创建手动排序顺序,然后使用它来对从数据库加载的列表进行排序。
像这样做:
var sorter = new Dictionary<int, string>()
{
{ 1, "c" },
{ 2, "a" },
{ 3, "b" },
{ 4, "c" },
{ 5, "c" },
{ 6, "a" },
{ 7, "a" },
{ 8, "b" },
{ 9, "d" },
{ 10, "c" },
};
empList =
empList
.OrderBy(e => sorter.ContainsKey(e.Id) ? sorter[e.Id] : "z")
.ToList();