C#LINQ - 相较于浮表

我有花车的两份名单,并都具有相同的大小,例如:C#LINQ - 相较于浮表

List<float> list1 = new List<float>{ 2.1, 1.3, 2.2, 6.9 } 

List<float> list2 = new List<float>{ 2.5, 3.3, 4.5, 7.8 }

使用LINQ我想检查是否在列表1所有项目都小于或等于比那些在list2中,例如:

2.1 < = 2.5
1.3 < = 3.3
2.2 < = 4.5
6.9 < = 7.8

在这种情况下,我希望得到结果为true,因为list1中的所有项都是< = list2中的项。什么是最好的有效的方式来做到这一点?

回答:

这听起来像你想要Zip,如果你真的想要比较这些配对。 (这是不正确的说,在list1所有项目都比list2所有项目较小,6.9大于2.5的例子)。

使用Zip

bool smallerOrEqualPairwise = list1.Zip(list2, (x, y) => x <= y) 

.All(x => x);

或者:

bool smallerOrEqualPairwise = list1.Zip(list2, (x, y) => new { x, y }) 

.All(pair => pair.x <= pair.y);

第一个选项更高效,但第二个选项可能更具可读性。

编辑:正如评论中指出的那样,这将更有效率,可能会增加可读性(更负面)。

bool smallerOrEqualPairwise = !list1.Zip(list2, (x, y) => x <= y) 

.Contains(false);

回答:

list1.Zip(list2, (x, y) => new { X = x, Y = y }). 

All(item => (item.X <= item.Y))

回答:

bool result = Enumerable.Range(0, list1.Count).All(i => list1[i] <= list2[i]); 

以上是 C#LINQ - 相较于浮表 的全部内容, 来源链接: utcz.com/qa/266905.html

回到顶部