C# 使用linq选择后显示阵列

C# 使用linq选择后显示阵列,c#,arrays,linq,C#,Arrays,Linq,我试着用4个字母列出所有的单词。但我不知道为什么它不起作用。它不会显示它 代码如下: IEnumerable<string> query4 = words .Where(n => n.Length == 4) .Select(n => n); DisplayArray(query4); IEnumerable query4=单词 .其中(n=>n.长度==4) .选择(n=>n); 显示阵列(查询4); 这是我的显示方法:

我试着用4个字母列出所有的单词。但我不知道为什么它不起作用。它不会显示它

代码如下:

    IEnumerable<string> query4 = words
       .Where(n => n.Length == 4)
       .Select(n => n);

    DisplayArray(query4);
IEnumerable query4=单词
.其中(n=>n.长度==4)
.选择(n=>n);
显示阵列(查询4);
这是我的显示方法:

    private static void DisplayArray<T>(T[] array)
    {
        foreach (T item in array)
            Console.WriteLine(item);
    } 
私有静态void DisplayArray(T[]数组)
{
foreach(数组中的T项)
控制台写入线(项目);
} 

根据您当前的代码

  private static void DisplayArray<T>(T[] array)
最后(请注意,
Select(n=>n)
是多余的,可以删除):


根据你现在的密码

  private static void DisplayArray<T>(T[] array)
最后(请注意,
Select(n=>n)
是多余的,可以删除):

私有静态void DisplayArray(IEnumerable数组)
{
foreach(数组中的字符串项)
控制台写入线(项目);
} 
私有静态void DisplayArray(IEnumerable数组)
{
foreach(数组中的字符串项)
控制台写入线(项目);
} 

首先,query4不是数组。请将方法更改为使用
IEnumerable
或使用
ToArray
。谢谢。我在林克认识。我认为它类似于arrayNope,数组是一种包含一组值的结构,其中作为Linq查询生成的
IEnumerable
仅表示未设置的序列,您必须使用
foreach
ToList
ToArray
来具体化它。在此之前,它实际上不会进行过滤或投影。此外,它还会在每次具体化时进行过滤和投影。这就是为什么您会看到许多Linq查询以
ToList
结尾。对于初学者来说
query4
不是数组。请将方法更改为使用
IEnumerable
或使用
ToArray
。谢谢。我在林克认识。我认为它类似于arrayNope,数组是一种包含一组值的结构,其中作为Linq查询生成的
IEnumerable
仅表示未设置的序列,您必须使用
foreach
ToList
ToArray
来具体化它。在此之前,它实际上不会进行过滤或投影。此外,它还会在每次具体化时进行过滤和投影。这就是为什么您会看到许多Linq查询以
ToList
结尾。谢谢您的回答!这很有帮助。我怎样才能创建一个对数组和IEnumerable都有好处的方法呢?@sara:
T[]
(数组)实现了
IEnumerable
,所以如果你为
IEnumerable
实现了一个方法,那么对数组
T[]
;反之亦然谢谢你的回答!这很有帮助。我怎样才能创建一个对数组和IEnumerable都有好处的方法呢?@sara:
T[]
(数组)实现了
IEnumerable
,所以如果你为
IEnumerable
实现了一个方法,那么对数组
T[]
;相反,情况并非如此。可能是因为您太难将
DisplayArray
方法缩小;如果另一个Linq返回
IEnumerable
?因为您提供了IEnumerable,所以我使用它。谢谢你的建议。可能你把
DisplayArray
方法的范围缩小得太窄了;如果另一个Linq返回
IEnumerable
?因为您提供了IEnumerable,所以我使用它。谢谢你的建议。
  DisplayArray(words.Where(n => n.Length == 4));
private static void DisplayArray(IEnumerable<string> array)
{
    foreach (string item in array)
       Console.WriteLine(item);
}