将断点添加到Lambda函数

Ryg*_*guy 3 c# sharepoint lambda

我正在尝试在我的c#代码中调试lamba,但似乎无论在lambda中我把断点放在哪里都不会进入它.我把它放在第一个支架,最后一个支架,返回,变量我想看到的价值,我能想到的一切,但仍然没有.

当试图调试lambda之外的任何行时它没有问题,我做错了什么?

Lambda如下:

clientProgramList.Items.OfType<SPListItem>().Where(x =>
{
    DateTime doa = x.GetValue<DateTime>("client1");
    DateTime dod = x.GetValue<DateTime>("client2");
    bool date = DateCompare.IsValidClient(enteredDate, endDate, doa, dod); 
    return date;
});
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 11

只是调用该Where方法根本不执行谓词.

由于LINQ的延迟执行方法,在您尝试迭代返回值之前不执行谓词 - 在这种情况下,您似乎忽略了它.

所以,如果你这样做:

var items = clientProgramList.Items.OfType<SPListItem>().Where(x =>
{
    DateTime doa = x.GetValue<DateTime>("client1");
    DateTime dod = x.GetValue<DateTime>("client2");
    bool date = DateCompare.IsValidClient(enteredDate, endDate, doa, dod); 
    return date;
});

int count = items.Count();
Run Code Online (Sandbox Code Playgroud)

当你尝试执行时,你的断点应该被击中Count().


Ily*_*nov 6

当您调用该LINQ查询时,不会调用lambda,而是仅构造查询.Where子句被延迟评估(仅当您开始迭代项目时).尝试ToList()在查询结束时添加并查看是否遇到断点.