我想通过linq增加一个int值。假设int值为4354764
&我想增加500多个值。我知道我可以通过for循环来做,但是可以通过LINQ吗?
示例:
int counter = 4354764;
var query = from a in stuff
select new { count = counter++ };
在上面的示例中,我想将计数器增加500倍&想要将查询变量作为具有增加值的整数。
答案 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);