C# 这个代码是什么意思?(IEnumerable<;int>;query=来自列表中的num)

C# 这个代码是什么意思?(IEnumerable<;int>;query=来自列表中的num),c#,.net,linq,ienumerable,C#,.net,Linq,Ienumerable,这是什么意思: IEnumerable<int> query = from num in list where num < 3 select num; IEnumerable query=来自列表中的num 其中num

这是什么意思:

IEnumerable<int> query = from num in list
                         where num < 3
                         select num;
IEnumerable query=来自列表中的num
其中num<3
选择num;
这是一个物体吗


有人能描述一下吗?

你知道正常的方法语法,对吗?例如
列表。添加(10)
。微软的一些聪明人指出,许多收藏和列表都有相似之处。人们可能喜欢做一些事情,比如选择某些值和求和值,这些值应该适用于所有集合,而不是每个集合都为其提供方法

因此,他们引入了扩展方法,这些方法只定义一次,但可以应用于特定类型的所有对象,例如集合。例如和。要使用扩展方法,您必须。
Where
扩展方法采用lambda表达式,该表达式在集合的每个元素上执行

假设您有一些整数列表:

List<int> list = new List<int>();
list.Add(-1);
list.Add(0);
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
编译器采用新语法并将其转换为前面提到的代码,其中包括
Where
方法。你看,这只是语法上的糖分,使处理集合变得更容易


是可枚举的任何对象的通用接口。最简单的枚举形式是对对象执行
foreach
,它逐个返回它包含的所有整数。因此,LINQ查询返回一些对象,但您不知道确切的类型。但是你知道它可以被枚举,这使得它非常有用。

它是一个linq等价于say的函数

IEnumerable<int> GetLessThanThree(IEnumerable<int> list)
{
   foreach(int num in list)
   {
     if (num < 3)
     {
        yield return num
     }
   }
}
IEnumerable getlessthantree(IEnumerable列表)
{
foreach(列表中的int num)
{
if(num<3)
{
收益返回数
}
}
}
或者如果你还没有达到收益率

IEnumerable<int> GetLessThanThree(IEnumerable<int> list)
{
   List<int> result = new List<int>();
   foreach(int num in list)
   {
     if (num < 3)
     {
        result.Add(num);
     }
   }
   return result;
}
IEnumerable getlessthantree(IEnumerable列表)
{
列表结果=新列表();
foreach(列表中的int num)
{
if(num<3)
{
结果。添加(num);
}
}
返回结果;
}

Hmm,google for LINQ是一个很好的起点。正确的部分是LINQ查询。左侧部分是预期的返回类型
IEnumerable查询
意味着retun对象是一个可以迭代的整数序列。
IEnumerable<int> query = from nr in list
                         where nr < 3
                         select nr;
IEnumerable<int> GetLessThanThree(IEnumerable<int> list)
{
   foreach(int num in list)
   {
     if (num < 3)
     {
        yield return num
     }
   }
}
IEnumerable<int> GetLessThanThree(IEnumerable<int> list)
{
   List<int> result = new List<int>();
   foreach(int num in list)
   {
     if (num < 3)
     {
        result.Add(num);
     }
   }
   return result;
}