【问题标题】:Joining two separate linq queries加入两个单独的 linq 查询
【发布时间】:2011-06-25 12:10:34
【问题描述】:

我有一个 LINQ 查询,它会产生一组作业记录。 由于 LINQ-To-SQL 对跨上下文查询的限制/限制,我无法连接表,因此 Job 记录的两个字段为空。

但是,我可以通过单独的 LINQ 查询来获得这些信息。

我的问题是我是否可以轻松地填充这两个字段,例如通过对这两个查询进行连接? - 如果是这样怎么办?

query1.Join(query2,..... and so on);

提前致谢。

编辑

var results = query1.Join(query2,
                        job => job.JobID,
                        other => other.JobID,
                        (job, other) => new
                        {
                            MissingField = other.Field,
                            OtherMissingField = other.OtherField
                        });

我收到错误消息: 无法从用法中推断方法 'System.Linq.Enumerable.Join(System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable, System.Func, System.Func, System.Func)' 的类型参数。尝试明确指定类型参数。

【问题讨论】:

  • JOIN 在 L2S 中工作得非常好。你能提供一个不适合你的代码的简单版本吗?

标签: c# linq linq-to-sql


【解决方案1】:

如果数据的大小使您可以将其全部放入内存,那么您可以在 LINQ-to-Objects 中进行连接;只需在原始查询中添加一些 .ToList() 或 .AsEnumerable() - 加入它们的 LINQ 保持不变。

但是;这不能用于加入服务器。为此,要么将您需要的表放入单个数据上下文中,要么作弊并使用 TSQL 进行该查询。 LINQ-to-SQL 的 ExecuteQuery<T> 方法非常适合此类用途。

【讨论】:

  • 在玩了很多之后,我终于到了那里。使用它不太喜欢的匿名类型对我来说是一个愚蠢的错误!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 2016-03-01
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多