使用LINQ根據多個列分組數據
在SQL中,您可以使用GROUP BY子句根據多個列分組數據。這允許您根據指定列中值的唯一組合來聚合數據。
LINQ使用GroupBy擴展方法提供了類似的分組機制。但是,與SQL不同,LINQ處理的是對象,它需要一種方法來識別分組標準。
要在LINQ中按多個列分組,可以使用匿名類型來表示組鍵。匿名類型是一種臨時、未命名的類型,允許您根據一組已知屬性對對象進行分組。
考慮以下SQL查詢:
<code class="language-sql">SELECT * FROM <table> GROUP BY <column1>, <column2></code>
要將此查詢轉換為LINQ,您可以使用匿名類型,如下所示:
<code class="language-csharp">var groupedData = table.GroupBy(x => new { x.Column1, x.Column2 });</code>
此代碼根據Column1和Column2屬性的值對錶中的行進行分組。生成的groupedData變量是IGrouping
然後,您可以迭代這些組並根據需要聚合數據,這與您在SQL中所做的方法類似:
<code class="language-csharp">foreach (var group in groupedData) { Console.WriteLine($"Group key: {group.Key}"); Console.WriteLine("QuantityBreakdown:"); foreach (var row in group) { Console.WriteLine($" - MaterialID: {row.MaterialID}, ProductID: {row.ProductID}, Quantity: {row.Quantity}"); } }</code>
此代碼將打印組鍵(具有Column1和Column2值的匿名類型)以及每個組中的各個行。
以上是如何使用LINQ通過多列分組數據?的詳細內容。更多資訊請關注PHP中文網其他相關文章!