C# 找不到源类型的查询模式的实现
我正在尝试打印并获取一行数字(2,4,8,16,32),但是如果使用LINQ表达式,is应该大于10但小于1000。我不知道我做错了什么 错误发生在我的program.cs中,当我使用from时,它在r下划线。我不明白这个错误是什么意思 program.cs:C# 找不到源类型的查询模式的实现,c#,linq,ienumerable,C#,Linq,Ienumerable,我正在尝试打印并获取一行数字(2,4,8,16,32),但是如果使用LINQ表达式,is应该大于10但小于1000。我不知道我做错了什么 错误发生在我的program.cs中,当我使用from时,它在r下划线。我不明白这个错误是什么意思 program.cs: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _3._4 { class Pr
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _3._4
{
class Program
{
static void Main(string[] args)
{
Reeks r = new Reeks();
var query =
from i in r// error is here
where i > 10 && i < 1000
select 2 * i;
foreach (int j in query)
{
Console.Write(j);
}
}
}
}Linq(即您正在使用的from i in r
语法)要求您实现IEnumerable
接口,而不是IEnumerable
。因此,正如Lee指出的,您可以像这样实现IEnumerable
:
class Reeks : IEnumerable<int>
{
private int i = 1;
public Reeks() { }
public IEnumerator<int> GetEnumerator()
{
while (true)
{
i = i * 2;
yield return i;
}
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
您需要在
Reeks
中实现IEnumerable
,以及非通用版本。非常感谢您,我真的很辛苦!
class Reeks : IEnumerable<int>
{
private int i = 1;
public Reeks() { }
public IEnumerator<int> GetEnumerator()
{
while (true)
{
i = i * 2;
yield return i;
}
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
var query = r.Where(i => i > 10)
.TakeWhile(i => i < 1000)
.Select(i => 2 * i);