C# 无法到达我的内部断点

C# 无法到达我的内部断点,c#,.net,linq,C#,.net,Linq,我正在运行以下代码: hashedUrlDataList.Select(mDalHashedUrlData.Save); 我在被调用的委托中放置了一个断点 public HashedUrlData Save(HashedUrlData item) { //breakpoint here } 但这并不止于此 如何解决此问题?当您在声明时枚举Select()的结果时,将调用您的方法。当您在声明时枚举Select()的结果时,将调用您的方法。Enumerable.

我正在运行以下代码:

 hashedUrlDataList.Select(mDalHashedUrlData.Save);
我在被调用的委托中放置了一个断点

public HashedUrlData Save(HashedUrlData item)
    {
//breakpoint here 
           }
但这并不止于此


如何解决此问题?

当您在声明时枚举
Select()
的结果时,将调用您的方法。

当您在声明时枚举
Select()
的结果时,将调用您的方法。

Enumerable.Select是惰性的。 试试这个,如果你的断点被抓住了,告诉我

hashedUrlDataList.Select(mDalHashedUrlData.Save).ToList();
或基本的:

hashedUrlDataList.Select(mDalHashedUrlData.Save).GetEnumerator().MoveNext()
如果您至少有一个元素,它就可以工作

你也可以这样做:

    hashedUrlDataList.Select(mDalHashedUrlData.Save).Any();
Any()执行与GetEnumerator()相同的操作

我想你想要的是:

List<HashedUrlData> hashedUrlDataList = new List<HashedUrlData>();
hashedUrlDataList.ForEach(Save);
List hashedUrlDataList=newlist();
ForEach(保存);
可枚举。选择是惰性的。 试试这个,如果你的断点被抓住了,告诉我

hashedUrlDataList.Select(mDalHashedUrlData.Save).ToList();
或基本的:

hashedUrlDataList.Select(mDalHashedUrlData.Save).GetEnumerator().MoveNext()
如果您至少有一个元素,它就可以工作

你也可以这样做:

    hashedUrlDataList.Select(mDalHashedUrlData.Save).Any();
Any()执行与GetEnumerator()相同的操作

我想你想要的是:

List<HashedUrlData> hashedUrlDataList = new List<HashedUrlData>();
hashedUrlDataList.ForEach(Save);
List hashedUrlDataList=newlist();
ForEach(保存);

LINQ用于查询数据;它不是为了引起副作用

如果您对
Save
方法的副作用比对它返回的
hashedrldata
实例更感兴趣,那么您真的应该调用

foreach (HashedUrlData h in hashedUrlDataList)
{
    h.Save();
}

如果您最终将使用返回的值,而这只是一个中间/调试阶段,那么请务必使用LINQ。请注意,只有在访问每个返回值时才会调用Save,或者像其他答案所示调用枚举整个枚举器的其他函数。

LINQ用于查询数据;它不是为了引起副作用

如果您对
Save
方法的副作用比对它返回的
hashedrldata
实例更感兴趣,那么您真的应该调用

foreach (HashedUrlData h in hashedUrlDataList)
{
    h.Save();
}

如果您最终将使用返回的值,而这只是一个中间/调试阶段,那么请务必使用LINQ。请注意,只有在访问每个返回值时才会调用Save,或者像其他答案所示调用枚举整个枚举器的其他对象。

那么,如何在没有ToList()的情况下强制调用?枚举它!您的代码只是要执行的表达式的一个定义,但实际上只有在需要时才会执行。例如,如果枚举Select()的结果,则将为每个元素调用函数。如果调用ToList(),则强制创建包含所有元素的列表。您可以这样做,但可能不需要它;那么如何在没有ToList()的情况下强制调用呢?枚举它!您的代码只是要执行的表达式的一个定义,但实际上只有在需要时才会执行。例如,如果枚举Select()的结果,则将为每个元素调用函数。如果调用ToList(),则强制创建包含所有元素的列表。您可以这样做,但可能不需要它;如何在没有ToList()的情况下强制调用?您希望在没有ToList或任何枚举的情况下强制调用?你需要列举它,不管怎样。如果Save方法没有HashedUrlData,如何调用它?最基本的调用是hashedUrlDataList.Select(mDalHashedUrlData.Save).GetEnumerator().MoveNext();如何在没有ToList()的情况下强制调用?您希望在没有ToList或任何枚举的情况下强制调用?你需要列举它,不管怎样。如果Save方法没有HashedUrlData,如何调用它?最基本的调用是hashedUrlDataList.Select(mDalHashedUrlData.Save).GetEnumerator().MoveNext();