【发布时间】: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