我想使用LINQ和LAMBDA表達式查詢ORACLE數據庫中的表。使用group by子句時,獲取數據的時間大大增加。按條件表達式組 - Linq
在下面的代碼塊中,有一個由表達式組成的條件。
using (var entities = new Entities())
{
var result = entities.myTable.Where(a => a.COLUMNONE > 1)
.GroupBy(g => new { columnForGrouping = (g.COLUMNTWO > 50 ? "Group1" : "Group2") })
.Select(sel => new {
columnGroup = sel.Key.columnForGrouping,
count = sel.Count()
}).ToList();
}
我想知道這種類型的表達式有多高效?而且,它有更好的嗎?
順便說一句,如果僅由一個值進行分組,則不需要創建匿名對象。可以改爲'.GroupBy(g => g.COLUMNTWO> 50?「Group1」:「Group2」)' –
我不認爲有一種內在的更好的方式來做到這一點。您的性能影響也可能是由數據庫中的索引(或更確切地說,缺乏)引起的,因此需要考慮太多因素。 –
看起來很好。請顯示執行的查詢的sql和解釋計劃? –