LINQ 多列分組詳解
在 SQL 中,可以使用 GROUP BY
子句根據多個列對數據進行分組。例如:
<code class="language-sql">SELECT * FROM <tablename> GROUP BY <column1>,<column2></code>
如何在 LINQ 中實現類似的功能呢?
使用匿名類型
一種方法是使用匿名類型。以下是一個示例:
<code class="language-csharp">var groupedData = x.GroupBy(x => new { x.Column1, x.Column2 });</code>
這段代碼根據 x
序列中元素的 Column1
和 Column2
屬性對元素進行分組,為每個唯一的值組合創建一個匿名類型。
數據示例
考慮以下數據結構:
<code class="language-csharp">public class QuantityBreakdown { public int MaterialID { get; set; } public int ProductID { get; set; } public float Quantity { get; set; } }</code>
以及以下 INSERT 語句:
<code class="language-sql">INSERT INTO @QuantityBreakdown (MaterialID, ProductID, Quantity) SELECT MaterialID, ProductID, SUM(Quantity) FROM @Transactions GROUP BY MaterialID, ProductID</code>
可以使用以下代碼將此轉換為 LINQ:
<code class="language-csharp">var groupedTransactions = transactions .GroupBy(t => new { t.MaterialID, t.ProductID }) .Select(g => new QuantityBreakdown { MaterialID = g.Key.MaterialID, ProductID = g.Key.ProductID, Quantity = g.Sum(t => t.Quantity) });</code>
此 LINQ 表達式按 MaterialID
和 ProductID
對事務進行分組,然後計算每個組的 Quantity
值之和。
以上是如何通過LINQ中的多列分組數據?的詳細內容。更多資訊請關注PHP中文網其他相關文章!