具有匿名类型的解决方案应该可以正常工作。LINQ 可以 只表示等值连接(用联接子句,反正),而事实上,你已经什么的说你要根据你的原始查询反正表达。
如果由于某些特定原因而您不喜欢带有匿名类型的版本,则应解释该原因。
如果您想做的不是您最初要求的,请举一个您 真正 想做的事的例子。
编辑:响应问题中的编辑:是的,要进行“日期范围”联接,您需要使用where子句。它们实际上在语义上是等效的,因此这只是可用的优化的问题。Equijoins通过基于内部序列创建查找来提供简单的优化(在LINQ
to Objects中,包括LINQ to DataSets)-将其视为从键到与键匹配的项序列的哈希表。
使用日期范围进行此操作比较困难。但是,根据“日期范围联接”的确切含义,您可以执行 类似的操作
-如果您计划创建日期的“范围”(例如每年一次),以便在日期范围内出现两个条目同一年(但不是同一日期)应该匹配,那么您只需使用该波段作为键即可。如果比较复杂,例如,连接的一侧提供了一个范围,而连接的另一侧提供了一个日期,如果它在该范围内,则匹配,最好用一个
where子句(第二个之后
from条款)。您可以通过命令一侧或另一侧更有效地查找匹配项来做一些特别时髦的魔术,但这将需要大量工作-
在检查性能是否是问题之后,我只会做这种事情。



