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