C#LINQ-与浮点列表进行比较
我有两个浮动列表,它们的大小相同,例如:C#LINQ-与浮点列表进行比较,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 } List list1=新列表{2.1,1.3,2.2,6.9} list2=新列表{2.5,3.3,4.5,7.8} 使用LINQ,我想检查列表1中的所有项目是否小于或等于列
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 }
List list1=新列表{2.1,1.3,2.2,6.9}
list2=新列表{2.5,3.3,4.5,7.8}
使用LINQ,我想检查列表1中的所有项目是否小于或等于列表2中的项目,例如:2.1如果你真的想比较这些成对的数据,听起来你想要
Zip
。(不能说list1
中的所有项目都比list2
中的所有项目小,例如6.9大于2.5。)
使用:
bool smallerOrEqualPairwise=list1.Zip(list2,(x,y)=>x);
或:
boolsmalerorequalpairwise=list1.Zip(list2,(x,y)=>new{x,y})
.All(pair=>pair.xlist1.Zip(list2,(x,y)=>new{x=x,y=y})。
All(item=>(item.Xbool result=Enumerable.Range(0,list1.Count)。All(i=>list1[i]如果列表长度不同,您希望发生什么情况?是的,我希望比较相同索引上的值:list1[0]与list2[0],list1[1]与list2[1],..而且两个列表总是有相同的大小,在我的例子中,列表不可能有不同的大小。您的集合初始值设定项,如new list{2.1,1.3,2.2,6.9}
将不起作用,因为您不能将double
s添加到float
s的列表中。是的,您是对的,但您可以这样做:list list list=new list(new float[]{1.2f,3.2f,4.5f});是的,我想将它们两两比较,如上面的注释中所述,例如,list1[0]@user1624552:对,已修复运算符。如果使用.Contains(false)
而不是.All(x=>x)
,则会少一个lambda。
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]);