使用LINQ从列表中选择“自定义不同”项我有一个通用的策略对象列表。该列表包含以下数据idpolicyNumberpolicySequenceotherData11011aaaa21012bbbb31013cccc41021dddd51031eeee61032ffff我想为每个policyNumber选择包含最高policySequence的行,以便我最终得到以下结果:idpolicyNumberpolicySequencecreated31013cccc41021dddd61032ffff我在下面有一个使用foreach的解决方案,但想知道在LINQ中是否有更简单、更清晰的方法来执行此操作?classProgram{staticvoidMain(string[]args){ListpolicyList=newList{newPolicy{id=1,policyNumber=101,policySequence=1,otherData="aaaa"},newPolicy{id=2,policyNumber=101,policySequence=2,otherData=“bbbb”},新政策{id=3,policyNumber=101,policySequence=3,otherData=“cccc”},新政策{id=4,policyNumber=102,policySequence=1,otherData=“dddd”},新政策{id=5,policyNumber=103,policySequence=1,otherData=“eeee”},新政策{id=6,policyNumber=103,policySequence=2,otherData=“ffff”}};列表filteredPolicyList=newList();foreach(策略列表中的变量策略){如果(!filteredPolicyList.Exists(x=>x.policyNumber==policy.policyNumber)){filteredPolicyList.Add(政策);}else{varcurrentPolicyInFilteredList=filteredPolicyList.Where(x=>x.policyNumber==policy.policyNumber).First();如果(policy.policySequence>currentPolicyInFilteredList.policySequence){filteredPolicyList.Remove(currentPolicyInFilteredList);filteredPolicyList.Add(政策);}}}}}公共类策略{publicintid;publicSequicpublicintpolicyNumber;;公共字符串其他数据;}varmaxPolicies=policyList.GroupBy(p=>p.PolicyNumber).Select(grp=>grp.OrderByDescending(p=>p.PolicySequence).First());如果您使用LINQtoObjects,则可以使用MoreLINQ项目的DistinctBy方法:varmaxPolicies=policyList.OrderByDescending(x=>x.PolicySequence).DistinctBy(x=>x.PolicyNumber);大家可以分组总结一下:以上就是C#学习教程:使用LINQ从List中选择“customdistinct”项,分享全部内容。如果对你有用,需要了解更多C#学习教程,希望大家多多关注——varresult=frompinpolicyList按p.policyNumber将p分组为gselectnew{Policy=g.Key,Max=g.Max()};本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
