【问题标题】:Why Reflector ver 7 produced wrong Linq code like this [closed]为什么 Reflector ver 7 会产生这样的错误 Linq 代码 [关闭]
【发布时间】:2011-09-09 07:11:49
【问题描述】:
private FileStorageFolder GetCapsuleContentFolder(FileStorageDataContext db)
{
    IQueryable<FileStorageFolder> source = from dbFolder in db.FileStorageFolders
        where (dbFolder.ParentID == null) && (dbFolder.Purpose == reportFolderPurpose)
        select dbFolder into dbFolder
        join dbSubFolder in db.FileStorageFolders on dbFolder.ID equals 
        dbSubFolder.ParentID into dbSubFolder
         where (dbSubFolder.Purpose == capsulelayoutFolderPurpose) && 
        (dbSubFolder.FolderName == capsuleReportContent)
         select dbSubFolder;

Instrument.Assert(source.Count<FileStorageFolder>() == 1);
return source.Single<FileStorageFolder>();
}

这是不正确的语法。有谁知道如何基于此创建 IQueryable 类型的基础?

【问题讨论】:

  • 向 JetBrains 发送错误报告?
  • @rickythefox 很确定 JetBrains 会说“你为什么要告诉我们?告诉 Red Gate!”
  • @sofyan_visi 如果您明确指出哪个部分不正确,这将有所帮助...这需要很多 linq...
  • @rickythefox 当然...感谢您的回复

标签: c# linq reflector


【解决方案1】:

如果有问题,请尝试将“优化”设置调低至 .NET 2.0。这将被强制显示明确的.Select(...) 等。这应该会产生正确的 C#,但没有 LINQ 样式。

但是请注意,它也可能会反转明显的调用顺序,因为它可能会使用显式扩展方法表示。不过,无论哪种方式,代码都应该是等效的。

【讨论】:

  • 当优化设置为 .NET 2.0 时我应该如何处理大量“AnonymousType0
  • @sofyan 好吧,上下文是什么?如果您打算这样做,您将已经拥有代码...
  • 对不起...我只是有点困惑,无法解决问题。无论如何,非常感谢您的回复
猜你喜欢
  • 2016-02-08
  • 1970-01-01
  • 2018-04-19
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多