C# 将整数列表中的所有数字转换为正数

C# 将整数列表中的所有数字转换为正数,c#,.net,linq,C#,.net,Linq,如果我有一个正整数和负整数的列表: var values = new List<int> { -30, -20, -10, 0, 10, 20, 30 }; 如何将所有值转换为正数 var values = new List<int> { 30, 20, 10, 0, 10, 20, 30 }; 我知道我可以使用intValue=intValue*-1,但这只能将负数转换为正数,反之亦然。此外,如果可能的话,我希望使用LINQ进行此操作。使用: 或者使用@CommuS

如果我有一个正整数和负整数的列表:

var values = new List<int> { -30, -20, -10, 0, 10, 20, 30 };
如何将所有值转换为正数

var values = new List<int> { 30, 20, 10, 0, 10, 20, 30 };
我知道我可以使用intValue=intValue*-1,但这只能将负数转换为正数,反之亦然。此外,如果可能的话,我希望使用LINQ进行此操作。

使用:

或者使用@CommuSoft在注释中提到的方法组语法的缩写形式:

var positives = values.Select(Math.Abs).ToList();
使用:

或者使用@CommuSoft在注释中提到的方法组语法的缩写形式:

var positives = values.Select(Math.Abs).ToList();


一个小的改进是使用eta减少:Math.Abs而不是i=>Math.Absi。但是+1。@CommuSoft是的,但是这种语法可能会让人感到困惑。无论如何,我都会包含它。一个小小的改进是使用eta减少:Math.Abs而不是I=>Math.Absi。但是+1。@CommuSoft是的,但是这种语法可能会让人感到困惑。请注意,第二种方法虽然语义正确,但速度可能慢得多:许多编译器可以生成无分支绝对值+尽管如此,请注意第二个(尽管语义正确)可能要慢得多:许多编译器可以生成无分支绝对值+1尽管如此。
values.Select(Math.Abs).ToList();
values.Select(n => n < 0 ? -n : n).ToList();
values.Select(n => n & int.MaxValue).ToList();