我努力奋斗,试图把思想放在这些概念上,非常感激任何帮助。如果在一张桌子上有一套命令,那么最好的办法就是绕过这些命令,对其他表格进行查询。
这个循环可以做我想做的事,但是我被告知并展示了这如何造成业绩问题。在其他文章中,我读过最好在循环之外查询底部的地方。
foreach (var item in myOrders)
{
var lookUpValues=(from f in ORDERS
where f.ORDERS ==item.ORDER_ID
&& f.ORDERS_SUFFIX==item.LINE
select f.Something);
}
而不是在我反复尝试过这样的事情之前就把整张顺序桌子拉下来, 但是正如你所见,它不会返回准确的行。
var orderIds=myOrders.Select (x =>x.ORDER_ID).Distinct().ToList();
var lineIds=myOrders.Select (x =>x.LINE).Distinct().ToList();
var query=(from f in ORDERS
where orderIds.Contains(f.ORDERS)
&& lineIds.Contains(f.ORDERS_SUFFIX)
select f).ToList();
下面是我认为需要的。 它会返回正确的命令, 需要它循环。 但是, 它会抛出一个错误, 我相信这是因为您可以一起查询内存对象和实体 。
var ordersAndLine=(from f in myOrders select new{sId=f.ORDER_ID,line=f.LINE}).ToList();
var query=(from f in ORDERS
from s in ordersAndLine
where s.sId==f.ORDERS
&& s.line==f.ORDERS_SUFFIX
select f).ToList();
不支持的例外: 无法创建恒定的匿名类型值 。 在此情况下只支持原始类型( 如 Int32、 String 和 General ) 。
我真的希望我的问题是有道理的。如果我没有正确解释我的情况,我提前道歉。我所做的是把大部分桌子拉下来,以回忆过去,但我担心这会造成业绩问题,并想看看是否有更好的办法过滤结果查询。