共用方式為


HOW TO:針對分組作業執行子查詢 (C# 程式設計手冊)

更新:2007 年 11 月

本主題顯示兩個建立查詢的不同方式,將來源資料排序成群組,然後個別對每個群組執行子查詢。每個範例中的基本技術是使用名為 newGroup 的「接續」(Continuation) 群組來源項目,然後針對 newGroup 產生新的子查詢。此子查詢會針對外部查詢建立的每個新群組執行。請注意,在此特定範例中最後的輸出不是群組,而是匿名型別的一般序列。

如需如何群組的詳細資訊,請參閱 group 子句 (C# 參考)

如需接續的詳細資訊,請參閱 into (C# 參考)。下列範例使用記憶體中資料結構做為資料來源,但是相同的原則適用任何種類的 LINQ 資料來源。

範例

private static void QueryMax()
{
    var queryGroupMax =
        from student in students
        group student by student.Year into studentGroup
        select new
        {
            Level = studentGroup.Key,
            HighestScore =
            (from student2 in studentGroup
             select student2.ExamScores.Average()).Max()
        };

    int count = queryGroupMax.Count();
    Console.WriteLine("Number of groups = {0}", count);

    foreach (var item in queryGroupMax)
    {
        Console.WriteLine("  {0} Highest Score={1}", item.Level, item.HighestScore);
    }
}

編譯程式碼

這個範例內含在 HOW TO:查詢物件集合 (C# 程式設計手冊) 中的範例應用程式中所定義的物件之參考。若要編譯和執行這個方法,請將方法貼上至該應用程式中的 StudentClass 類別,並加入來自 Main 方法的呼叫。

當您將這個方法配合應用程式時,請記住,LINQ 需要 3.5 版的 .NET Framework,且專案必須內含 System.Core.dll 的參考,以及 System.Linq 的 using 指示詞。LINQ to SQL、LINQ to XML 和 LINQ to DataSet 型別需要額外的 Using 和參考。如需詳細資訊,請參閱HOW TO:建立 LINQ 專案

請參閱

概念

LINQ 查詢運算式 (C# 程式設計手冊)