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)表达式**为这种宏函数而闻名。这个函数只会扩展我的查询树。 –