gpt4 book ai didi

c# - 尽管数据源不同,LINQ 查询返回相同的结果

转载 作者:太空狗 更新时间:2023-10-30 00:52:42 25 4
gpt4 key购买 nike

我正在尝试以下操作:

int[] numbers = { 12, 14, -12, -8, 0, 17 };

var pos = from number in numbers
where number > 0
select number;

Console.WriteLine ( "- - - All numbers - - - " );
foreach (var number in numbers)
Console.Write ( "{0} " , number );

Console.WriteLine();
Console.WriteLine ( "- - - Positive numbers ( First ) - - -" );
foreach ( var number in pos )
Console.Write("{0} ", number);

Console.WriteLine();
numbers = new int[]{ 12, 14, -12, -8, 0, 17, 11, 10, -30, -15 };
Console.WriteLine("- - - All numbers - - - ");
foreach (var number in numbers)
Console.Write("{0} ", number);

Console.WriteLine();
Console.WriteLine("- - - Positive numbers ( Second ) - - -");
foreach (var number in pos)
Console.Write("{0} ", number);

尽管我更改了数组中的元素,但我获得了以下结果:

- - - All numbers - - -
12 14 -12 -8 0 17
- - - Positive numbers ( First ) - - -
12 14 17
- - - All numbers - - -
12 14 -12 -8 0 17 11 10 -30 -15
- - - Positive numbers ( Second ) - - -
12 14 17

最佳答案

您正在倒数第二个 foreach 中遍历 pos。它会记住最少运行的结果。如果你想要一个新的结果,你必须在打印结果之前再次查询 numbers。就这样

Console.WriteLine();
numbers = new int[]{ 12, 14, -12, -8, 0, 17, 11, 10, -30, -15 };
Console.WriteLine("- - - All numbers - - - ");
foreach (var number in numbers)
Console.Write("{0} ", number);

pos = from number in numbers
where number > 0
select number;

Console.WriteLine();
Console.WriteLine("- - - Positive numbers ( Second ) - - -");
foreach (var number in pos)
Console.Write("{0} ", number);

不过,我建议改用以下内容。

foreach (var number in numbers.Where(n => n > 0))
Console.Write("{0} ", number);

编辑:

这是一种方式。

Func<int, bool> comparer = n => n > 0;
foreach (var number in Compare(numbers, comparer))
System.Console.Write("{0} ", number);

比较方法是

public IEnumerable<int> Compare(IEnumerable<int> source, Func<int, bool> comparer)
{
return source.Where(comparer);
}

您也可以编写扩展方法。有很多可能的方法,具体取决于您要走的方向。

关于c# - 尽管数据源不同,LINQ 查询返回相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20310215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com