【问题标题】:Is there a 3rd party library that knows to convert a linq expression to a human readable string representation?是否有第 3 方库知道将 linq 表达式转换为人类可读的字符串表示形式?
【发布时间】:2010-10-10 15:19:27
【问题描述】:

我有一个 linq 表达式,我希望以人类可读的形式在日志中显示它。任何人都知道任何可以做到这一点的图书馆?我看到了这个条目Creating a string from a lambda expression,但在我看来它并没有那么有用。

谢谢。

编辑

现在我想起来,我的情况可能没有那么有代表性,因为我的 linq 表达式在里面包含了一个类型名称,它被 ToString 扩展成一个完全怪异的东西,因为该类型是一个通用的类型。例如,表达式 e => e.TypeName == typeof(T).AssemblyQualifiedName 其中 T 是我的通用上下文被扩展为:

"e => (e.TypeName == \"Shunra.Infra.DummyEntity.Contract.IDummyEntity`1[[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], Shunra.Infra.DummyEntity.Contract, Version=1.0.0.0, Culture=neutral, PublicKeyToken=807fc02bc4ce69db\")"

看起来要求程序集限定名称的格式很好是不公平的......

【问题讨论】:

  • 如果您正在寻找可以直接使用的东西,那么该链接对您没有帮助。但是,由于我认为不存在您想要的东西,因此您应该仔细查看该链接。如果您知道如何遍历表达式树,则可以轻松地构建一个描述您想要的内容的字符串。但是,仅使用 .ToString() 呈现表达式的方式有什么问题?您可以将代码发布到您的 LINQ 表达式中吗?
  • 我知道遍历linq表达式。但这至少是一天的工作,如果我能保存它 - 我的胜利。
  • 当然,我明白了。不过,您能否发布您的 LINQ 代码,以及您希望获得哪种“人类可读”输出的示例?
  • @Kirk,我的错。看来我的要求不合理……

标签: .net linq lambda expression-trees human-readable


【解决方案1】:

你可以直接使用ToString,输出是相当可读的,至少对于程序员来说...

【讨论】:

    猜你喜欢
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 2010-12-18
    • 1970-01-01
    • 2020-02-08
    • 2015-01-28
    相关资源
    最近更新 更多