LINQ to Entities中的临时表

我有一个巨大的用户ID表。
我有一个我想要的用户ID数组。
我有两个具有外部用户ID密钥的表。

获得此信息性能的最佳方法是什么?

理想情况下,在SQL中,最终结果有点像这样(如果一个表中没有用户ID但是另一个表中没有用户ID,则为空值):

userid table1value table2value 1 null 12 5 123 null 

我去年遇到了同样的问题,然后在性能方面,然后没有采用临时表来保存记录(应用程序结束或服务结束)O转移到LINQ to SQL并创建了一个存储过程并通过LINQ之类的实体调用它到存储过程=)。 我的存储过程完成了所有操作,只返回了我想要的那些记录,并且我在存储过程结束时进行了分页,这样我一次获得的数据有限,而不是应用程序中的所有数据。

如果你需要任何帮助,请告诉我。 我也会给出一个代码片段。

据我所知,LINQ to Entities没有办法动态创建临时表…我认为最接近的是使用LINQ to Objects with class或生成匿名类型。

或者,在存储过程中执行此操作,并将proc导入到对象上下文中,并让代码调用proc。 proc可以创建一个临时表,或者它想要的任何东西。

HTH。

好吧,LINQ允许您像SQL一样加入集合(实体),因此您可以创建一些外部联接来获取数据,并且在给予Entity Framework时应该转换为相对有效的SQL语句。 这是一个小例子:

 var results = from u in UserDataSource join t1 in Table1DataSource on u.UserId = t1.UserId into gj from jt1 in gj.DefaultIfEmpty() select new {u.UserId, Table1Data = jt1 == null ? String.Empty : jt1.Data}; 

如果表格确实很大,或者需要执行额外的处理来获得结果,我会考虑在服务器上创建一个视图并将其映射到代码中的Entity 。 然后它变成一个非常简单的选择; 您只需将视图结果过滤到您想要查看的用户ID。