2
例如, 「IN」:自定義擴展,功能實現在C#(LINQ-2-實體)
。載有(...)的supporten在Linq2Entities並轉化爲 「IN」 的SQL表達式。
我婉重寫此查詢:
var foundExntities = myDbContext.MyEntityes.Where(o => new List<int> {111, 222, 333).Contains(o.ID)).ToList()
在形式上像有:
var foundExntities = myDbContext.MyEntityes.Where(o => o.ID.In(111, 222, 33)).ToList()
我怎麼能寫correspondend定製在(...)分機功能?
我建議你不要。在'int'上定義擴展方法是非常令人困惑的,當這些方法泄漏到不能使用的上下文中(並且寫入它們以便它們可以在任何地方使用似乎都不值得)。除此之外,我不認爲你可以* - 方法需要被EF表達式樹解析器識別,我不認爲它們有擴展點。 (雖然我對EF本身並不熟悉,但我確信你可以包裝'IQueryable'實現,但即使這樣做似乎比它的價值更麻煩。 –
儘管可以使用'params int []'聲明可變數量的整數參數(請參閱https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/linq/how-to -add-custom-methods-for-linq-queries),我反對在EF中創建自定義聚合方法。由於自定義方法有時不直接轉換爲SQL查詢,因此可能會引發諸如「LINQ to Entities does not recognized the method」之類的問題。 –
我只想提取**以EF(LINQ-2-SQL)表達式**爲這種宏函數而聞名。這個函數只會擴展我的查詢樹。 –