请帮助这位Linq新手!
我正在创建一个测试类中的列表,我想使用Moq来检查结果。
我可以很容易地编写一个谓词来检查列表的结果。如何将该谓词转换为表达式?
var myList = new List<int> {1, 2, 3};
Predicate<List<int>> myPredicate = (list) =>
{
return list.Count == 3; // amongst other stuff
};
// ... do my stuff
myMock.Verify(m => m.DidStuffWith(It.Is<List<int>>( ??? )));
如果你能理解这么多泛型,那么需要一个Expression<Predicate<List<int>>>
表达式。我找到的答案是将表达式编译成谓词,但这并没有帮助我更好地理解Linq。
编辑:我已经用方法使其工作了;对于表达式,我只想知道是否有任何方法可以使用带有主体的lambda表达式来实现-如果没有,为什么没有?
myMock.DidStuffWith(...)
返回被要求进行操作的列表并在本地进行检查之间有什么功能上的区别? - Matt MillsmyMock.DidStuffWith(...)
是一个 void 方法吗?如果是的话,那我完全同意你的观点。 - Matt Mills