创建匿名类的集合

jp2*_*ode 1 c# anonymous-types visual-studio-2010

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

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

有很多方法我已经知道了古典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",
};
Run Code Online (Sandbox Code Playgroud)

现在,当我迭代我的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);
    }
  }
Run Code Online (Sandbox Code Playgroud)

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

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

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

var parts = new List<typeof(part)>();
var emps = new List<typeof(emp)>();
Run Code Online (Sandbox Code Playgroud)

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

什么

SLa*_*aks 6

您需要使用类型推断:

new[] { part }.ToList()
Run Code Online (Sandbox Code Playgroud)

(您可能希望事后清除列表)

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

public static List<T> ListOf<T>(T sample) {
    return new List<T>();
}
var parts = ListOf(part);
Run Code Online (Sandbox Code Playgroud)