LINQPad Dump(toDataGrid) 在执行结束之前不会显示

本文关键字:显示 结束 执行 Dump toDataGrid LINQPad | 更新日期: 2023-09-27 18:36:45

我正在 LINQPad 中处理一个小脚本,用于自动批量邮件。尽管脚本验证了数据,但我希望有人检查它并确认。而且,以下是我对健全性检查的尝试:

var datasource = Enumerable.Range(0, 10) //not actual data
    .Dump("Data", true);
var message = string.Format("Please enter {0} to confirm or -1 to cancel : ", datasource.Count());
var container = new DumpContainer(message).Dump("Last Confirmation");
do
{
    var result = Console.ReadLine();
    container.Content = (container.Content as string) + result;
    if (result == "-1") return;
    if (result == datasource.Count().ToString()) break;
    container.Content = (container.Content as string) + "'n" + message;
} while (true);
//do stuffs...

它的大部分工作都很好,除了datasource在执行结束之前不会被转储,这破坏了这个代码块的全部目的。如何使"数据"选项卡立即显示?

请注意,我打算将datasource转储到新的DataGrid选项卡中,因为它无法轻松扫描或导出到Excel。

LINQPad Dump(toDataGrid) 在执行结束之前不会显示

这在 v4.51.03 中现已修复(在撰写本文时处于测试阶段)。

使用新的 Util.ReadLineAsync 方法:

for (int i = 0; i < 10; i++)
{
    int x = await Util.ReadLineAsync<int> ("Enter a number");
    Enumerable.Range (0, x).Dump (x + " integers", true);
}
这是我

发现的解决这个问题的作弊方法: Hyperlinq

void Main()
{
    var datasource = Enumerable.Range(0, 10) //not actual data
        .Dump("Data", true);
    Console.Write("Please confirm everything is correct : "); //couldnt manage to get them to dump on same line
    new Hyperlinq(() => DoStuffs(datasource), "Do Stuffs").Dump();
}
// Define other methods and classes here
public void DoStuffs(IEnumerable<int> datasource)
{
    datasource.Select(x => 2 * x).Dump("Altered Data", true);

    new Hyperlinq(() => DoStuffs(datasource), "Do More Stuffs").Dump();
}

此作弊还引入了一个小烦恼/错误。当数据网格中没有足够的行来占用整个区域时,将抛出ArgumentOutOfRangeException并将其转储到结果面板,但不会中断执行流。