1

少しコードを書いていますが、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",
};

ここで、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しても機能しません!

何が?

4

1 に答える 1

6

型推論を使用する必要があります。

new[] { part }.ToList()

(おそらく後でリストをクリアしたいでしょう)

ヘルパー メソッドを作成することもできます。

public static List<T> ListOf<T>(T sample) {
    return new List<T>();
}
var parts = ListOf(part);
于 2013-08-05T20:07:56.927 に答える