当前位置: 首页 > 编程语言 > C#

使用LINQ进行配对设置分享

时间:2023-04-10 17:42:22 C#

使用LINQ进行配对设置当我有一个列表时IListlist=newList();列表.Add(100);列表.Add(200);列表.Add(300);列表.添加(400);列表.Add(500);提取对的方法是什么会给你一个匿名“对”对象数组,其中A和B属性对应于对元素。varpairs=list.Where((e,i)=>inew{A=e,B=list[i+1]});LINQ最优雅的方式:list.Zip(list.Skip(1),Tuple.Create)点'。staticIEnumerableJoinTheDots(thisIEnumerabledots){varsegments=dots.Zip(dots.Skip(1),(a,b)=>newPathSegment(a,b));返回段;您可以使用for循环:varpairs=newList();for(inti=0;i你也可以使用LINQ,但它更难看:varpairs=list.Take(list.Count-1).Select((n,i)=>new[]{n,list[i+1]});编辑:您甚至可以在原始IEnumerable中执行此操作,但它更丑陋:varcount=list.Count();varpairs=list.SelectMany((n,i)=>new[]{new{Index=i-1,Value=n},new{Index=i,Value=n}}).Where(ivp=>ivp.Index>=0&&ivp.Indexivp.Index,(i,ivps)=>ivps.Select(ivp=>ivp.Value));更笼统地说:publicstaticIEnumerablePairwise(thisIEnumerablevalues,intcount,FuncpairCreator){if(count下面的解决方案使用了zip方法。压缩原始列表和originalList。跳过(1)以获得所需的结果。varadjacents=originalList.Zip(originalList.Skip(1),(a,b)=>new{N1=a,N2=b});在我的脑海中,完全未经测试:publicstaticTPairwise(thisIEnumerablelist){Tlast;boolfirstTime=true;foreach(variteminlist){if(!firstTime)return(Tuple.New(last,item));否则第一次=假;最后一个=项目;}}using.Windowed():以上就是C#学习教程:使用LINQ配对设置的全部内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注---varsource=new[]{100,200,300,400,500};varresult=source.Windowed(2).Select(x=>Tuple.Create(x.First(),x.Last()));本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: