我正在运行以下代码:
hashedUrlDataList.Select(mDalHashedUrlData.Save);
我在被调用的委托中放了一个断点,
public HashedUrlData Save(HashedUrlData item)
{
//breakpoint here
}
但它并不止于此。
我该如何解决这个问题?
答案 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,或者调用其他枚举整个枚举器的内容,就像其他答案所示。