在 LINQPad 软件中,我想知道是否可以将结果保存或导出为 Html 文件。
结果选项卡是
我想保存结果并能够通过电子邮件发送。
我知道我可以通过使用一些外部指令来做到这一点,例如
string htmlResult = Util.Run ("test.linq", QueryResultFormat.Html).AsString();
或
lprun -format=html foo.linq > output.html
但我希望能够按需导出结果,但并非总是如此。我想为我的脚本带来最少的交互性。我想让脚本的用户决定何时继续以及何时发送脚本。
我只需要访问结果的正文元素。 LINQpad 让我对此感到疯狂,因为我可以使用 Util.Run 或 lprun 生成 Html,我还可以使用 Util.HtmlHead 访问此结果的头部,我可以使用 Util.ClearResults() 清除结果,我可以写在此结果页面中包含我想要的所有内容,但无法检索它。我可以使用右上角的“导出”按钮手动导出它,但无法通过编程来完成。
我通过使用带有新 Util 类的扩展创建了一个解决方法
public static class Util2
{
// https://www.linqpad.net/CustomizingDump.aspx
// http://www.linqpad.net/lprun.aspx
// https://stackoverflow.com/questions/3555317/linqpad-extension-methods
private static StringBuilder htmlStringBuilder = new StringBuilder();
/// <summary>Writes to LINQPad result window and save the result in html file</summary>
public static object Save(this object o, bool writeFile = false, string fileName = null)
{
htmlStringBuilder.Append(Util.ToHtmlString(o));
return o;
}
public static string GetResults()
{
return htmlStringBuilder.ToString();
}
public static void ClearResults()
{
htmlStringBuilder.Clear();
}
}
我可以通过简单地在所有 .Dump() 之后添加 .Save() 来使用它。我无法再使用 Console.Write() 并尝试最大程度地使用 Util.RawHtml()。
最佳答案
目前,无法以编程方式导出结果窗口的内容。但您可以通过提取原始 HTML 来获得相当接近的结果:
string rawHTML = Util.InvokeScript (true, "eval", "document.documentElement.outerHTML");
这与您从交互式“导出为 HTML”选项中获得的“熟”HTML 不同。煮熟的 HTML 中的超链接和脚本已被清除,如果没有 LINQPad 主机,这些超链接和脚本将无法工作。
不久前有一个 LINQPad 功能请求添加一个方法,例如 Util.GetResultsAsHtml()
来提取导出的 HTML。添加这样的方法的困难在于,当通过 lprun 调用脚本时,它会失败(因为结果被发送到 Console.Out 而不是浏览器)。
关于c# - 使用脚本将 LinqPad 结果控制台导出为 Html 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70457162/