Skip to main content
 首页 » 编程设计

c#之创建匿名类的集合

2024年01月28日26Renyi-Fan

我正在编写一些代码,我想尝试使用 C# 的匿名功能来完成它。

我正在根据从 SQL Server 返回的 DataTable 编写摘要。

我已经知道 Classical C# (???),可以通过多种方式编写它,但我有兴趣找点乐子。

所以,这是我想要的匿名类的类型:

// Employee 
var emp = new { 
  Badge = "000000", 
  Name = "No Name", 
  Parts = new List<Part>(), 
  Days = new List<DateTime>(), 
}; 
 
// Part 
var part = new { 
  SerialNumber = "N/A", 
  Date = DateTime.MinValue, 
  Badge = "000000", 
}; 

现在,当我遍历我的 DataTable 条目时,我想按 SerialNumber 对我的部分进行排序。

我要做的第一件事是将数据分解为几天。

private void TestMethod(DateTime minDate, DateTime maxDate, DataTable table) { 
  int days = 1; 
  var nextDay = minDate.AddHours(24); 
  foreach (DataRow row in table.Rows) { 
    var dateTime = (DateTime)row["Date_Time"]; 
    var emp = new { 
      Badge = row["Badge"].ToString(), 
      Parts = new List<Part>(), 
      Days = new List<DateTime>(), 
    }; 
    var part = new { 
      SerialNumber = row["Serial_Number"].ToString(), 
      Date = dateTime, 
      Badge = row["Badge"].ToString(), 
    }; 
    if (nextDay < dateTime) { 
      days++; 
      nextDay = nextDay.AddHours(24); 
    } 
  } 

现在,它变得有点有趣了。

我需要一种方法来存储不同日期的零件信息以及在此期间找到的不同员工。

我将如何创建和使用我的匿名类项目的匿名集合?

var parts = new List<typeof(part)>(); 
var emps = new List<typeof(emp)>(); 

使用 typeof(以上)不起作用!

什么作用?

请您参考如下方法:

你需要使用类型推断:

new[] { part }.ToList() 

(之后你可能想清除列表)

你也可以制作一个辅助方法:

public static List<T> ListOf<T>(T sample) { 
    return new List<T>(); 
} 
var parts = ListOf(part);