我有以下代码:
IQueryable<SomeType> allItems = ...;
var selectedItems = allItems.Where( item => ( item.State == 1 || item.State == 3 ) );
Console.WriteLine( selectedItems.ToString() );
我得到以下查询:
SELECT [t0].[ItemId], [t0].[State], <other columns>
FROM [Items] AS [t0]
WHERE [t0].[State] = @p0 OR [t0].[State] = @p1
您会看到,实际值 1 和 3 没有插入到查询中,而是作为参数传递,这通常会导致选择次优的执行计划。
我可以以某种方式使 Ling-To-Sql 发射WHERE [t0].[State] = 1 OR [t0].[State] = 3
吗?