无法达到我的内心断点

时间:2012-03-20 12:02:32

标签: c# .net linq

我正在运行以下代码:

 hashedUrlDataList.Select(mDalHashedUrlData.Save);

我在被调用的委托中放了一个断点,

public HashedUrlData Save(HashedUrlData item)
    {
//breakpoint here 
           }

但它并不止于此。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:5)

当您在枚举Select()时,将会调用您的方法。

答案 1 :(得分:1)

Enumerable.Select是Lazy。 试试这个并告诉我你的断点是否被抓住

hashedUrlDataList.Select(mDalHashedUrlData.Save).ToList();

或基本:

hashedUrlDataList.Select(mDalHashedUrlData.Save).GetEnumerator().MoveNext()

如果您至少有一个元素,它就会起作用。

你也可以这样做:

    hashedUrlDataList.Select(mDalHashedUrlData.Save).Any();

Any()与GetEnumerator()。MoveNext()

相同

我认为你想要的是:

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

答案 2 :(得分:0)

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

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

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

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