LINQPad Dump(toDataGrid) 直到执行结束才显示
LINQPad Dump(toDataGrid) doesn't display until end of execution
我正在 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。
这是我发现的绕过这个问题的秘籍: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();
}
还有一个小的 annoyance/bug 与此作弊一起引入。当数据网格中没有足够的行来占据整个区域时,将抛出 ArgumentOutOfRangeException
并转储到结果面板,但不会中断执行流程。
此问题现已在 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);
}
我正在 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。
这是我发现的绕过这个问题的秘籍: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();
}
还有一个小的 annoyance/bug 与此作弊一起引入。当数据网格中没有足够的行来占据整个区域时,将抛出 ArgumentOutOfRangeException
并转储到结果面板,但不会中断执行流程。
此问题现已在 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);
}