在匿名方法/函数传递在C#中的参数

我有一个需要有条件地执行的方法,像这样的方法:

int MyMethod(Func<int> someFunction) { if (_someConditionIsTrue) { return someFunction; } return 0; }

我希望能够到的MyMethod通过LINQ查询为someFunction:

int i = MyMethod(_respository.Where(u => u.Id == 1).Select(u => u.OtherId));

我该怎么做呢?

--------------解决方案-------------

int i = MyMethod(() => _respository.Where(u => u.Id == 1).Select(u => u.OtherId));

正如你所看到的,我所做的查询为lambda。 你将不得不这样做,否则,你的查询将被只调用之前执行MyMethod (...并且将推出编译时错误;),而它执行),而不是。

旁注:

return someFunction;return someFunction();

也许这是一个错字,但在你的MyMethod需要实际调用该函数:

return someFunction();

并调用它时,你就直接调用该函数。 相反,你需要传递一个lambda表达式。 此外,你似乎是在传递一个Func<IEnumerable<int>> ; 加Single() SingleOrDefault() First()FirstOrDefault()

int i = MyMethod(() => _respository.Where(u => u.Id == 1).Select(u => u.OtherId).SingleOrDefault());

分类:C# 时间:2012-12-05 人气:0
本文关键词: 匿名方法,匿名函数
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.806 (s). 10 q(s)