1
    foreach (ReportType t in reportsCollection)
    {
        List<Report> reps = (from r in t.reports where r.isChecked == true select r).ToList<Report>();
        foreach (Report r in reps)
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(r.path));
    }

このステートメントはうまく機能します。おそらくこれを行うことができる単一のLINQステートメントを探しています。

基本的に、isChecked というプロパティを持つレポート オブジェクトがあります。reportsCollection には、そのタイプのレポートのリストを含むいくつかの reportTypes が含まれています。したがって、コレクションは次のようになります。

タイプ1

  • 報告
  • レポート 2
  • レポート 3

タイプ2

  • レポート 4
  • レポート 5
  • レポート 6

等々。

isChecked == trueこれらのタイプ内のすべてのレポートを取得する LINQ ステートメントが必要です。ループが必要だと思いますが、コミュニティが解決策を持っているかどうかを知りたいと思っていました. ありがとう!

4

2 に答える 2

7

SelectManyを使用したい

var query = reportsCollection.SelectMany(t => t.reports)
                             .Where(r => r.isChecked == true)
                             .ToList();

クエリ式の構文形式では、次のように記述できます。

var query = (from type in reportsCollection
            from report in type.reports 
            where report.isChecked == true
            select report).ToList();
于 2011-09-13T15:02:54.290 に答える
2

In query syntax it will look like this

var query = from t in reportCollection
            from r in t.reports 
            where r.isChecked == true
            select r;
于 2011-09-13T15:04:38.703 に答える