C# 使用linq选择后显示阵列
我试着用4个字母列出所有的单词。但我不知道为什么它不起作用。它不会显示它 代码如下: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); 这是我的显示方法:
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);
}