EntityFramework v6.0
IBM.Data.DB2.EntityFramework v10.5
.NET Framework v4 / C# v4.0(是的,正在升级)
例子:
List<long> myIds = new List<long>{ 12345, 23456, 34567 };
IQueryable<myModel> myCollection = (from a in context.TBL_ONE
join b in context.TBL_TWO on a.ENTY equals b.ENTY
select new myModel()
{
LINE_ID = a.LINE_ID
}).AsQueryable();
var results = myCollection.Where(x => myIds.Contains(x.LINE_ID)).ToList(); // here is the issue...
“myCollection”会非常大,“myIds”集合也会很大。
所以希望它编译为“SELECT ... WHERE LINE_ID IN (12345, 23456, 34567);”
然而,它编译为“SELECT ... WHERE LINE_ID = 12345 OR LINE_ID = 23456 OR LINE_ID = 34567;”
我已经尝试过 HashSet、List 和 Array——不管是大的还是小的,它们都给出了相同的编译风格。这是因为过时的 linq 或 .net 版本吗?
如果我能提供更多信息或格式,请告诉我,我还是个初学者。谢谢