1

重複の可能性:
C#のリフレクションを使用して文字列からプロパティ値を取得します

コレクションを反復処理するときに取得するプロパティを指定できるようにするジェネリックメソッドを作成しようとしています。

private void WriteStatisticsRow<T>(ICollection<InstitutionStatistics> stats, 
    ICollection<short> years, 
    string statisticsName, 
    string rangeName) where T : struct
{
    Console.WriteLine(statisticsName);

    foreach (short yr in years)
    {
        var stat = stats.SingleOrDefault(s => s.InformationYear == yr);

        if (stat != null)
        {
            if (typeof(T) == typeof(double))
            {
                Console.WriteLine(value, format: "0.0");
            }
            else
            {
                Console.WriteLine(value);
            }
        }
        else
        {
            Console.WriteLin(string.Empty);
        }
    }
}

基本的に、statsコレクションを繰り返し処理し、指定されたプロパティの値を書き出します。LINQ式を使用してこれを行うことができると思いますが、方法がわかりません。

4

3 に答える 3

2

IEnumerable<>.Select() を使用します。

var props = collection.Select(x => x.Property);

foreach (var p in props)
{
  Console.WriteLine(p.ToString());
}
于 2012-09-25T09:51:44.340 に答える
1

年順に値を取得します。

foreach (double value in
    from stat in stats
    where years.Contains(stat.InformationYear)
    orderby stat.InformationYear
    select stat.Property)
{
    Console.WriteLine(value);
}
于 2012-09-25T10:03:59.367 に答える
0

質問を理解したら、InformationYear プロパティの値を書き出す必要があるため、LINQ 式は次のようになります。

  foreach (double value in
        from stat in stats
        select stat.InformationYear)
    {
        Console.WriteLine(value);
    }
于 2012-09-25T10:14:06.107 に答える