通过linq增加一个整数

时间:2015-12-22 08:58:39

标签: c# linq

我想通过linq增加一个int值。假设int值为4354764&我想增加500多个值。我知道我可以通过for循环来做,但是可以通过LINQ吗?

示例:

int counter = 4354764;
var query = from a in stuff
            select new { count = counter++ };

在上面的示例中,我想将计数器增加500倍&想要将查询变量作为具有增加值的整数。

4 个答案:

答案 0 :(得分:4)

您可以使用#include <iostream> #include <string> #include <thread> #include <future> void set_string(std::promise<std::string>& p) { p.set_value_at_thread_exit("set from thread"); } int main() { std::promise<std::string> p; std::future<std::string> f = p.get_future(); std::thread(&set_string, std::ref(p)).detach(); std::cout << f.get() << std::endl; } 并依靠副作用来增加Enumberable.Range。请注意,LINQ使用延迟评估,因此您需要强制评估counter的查询。我使用了counter,但您也可以使用FredrikRedin建议的ToList()

Count()

或者: - )

 int counter = 4354764;
 var query = (from a in Enumerable.Range(1, 500)
                select new { count = counter++ }).ToList();

或者如果你真的需要一个范围:

counter += 500

答案 1 :(得分:1)

from a in Enumerable.Range(1, 500) select new { count = counter + a };

答案 2 :(得分:1)

我已经调整了您的示例并添加了500次迭代

int counter = 4354764;
int result  = Enumerable.Range(1, 500)
                        .Select(x => ++counter)
                        .Last();

Console.WriteLine("{0} {1}", counter, result);

由于.Last()强制总枚举,因此输出

4355264 4355264

答案 3 :(得分:1)

Count()足以强制进行评估,无需创建列表。

 int counter = 10;
 Enumerable.Range(1, 500).Select(x => ++counter).Count();
 Console.WriteLine("{0}", counter);