linqdistinctorgroupedbymultipleattributes如何使用c#和Linq从下一个列表中获取结果:varpr=newList(){newProduct(){Title="Boots",Color="Red",Price=1},newProduct(){Title="Boots",Color="Green",Price=1},newProduct(){Title="Boots",Color="Black",Price=2},newProduct(){Title="Sword",Color="Gray",Price=2},newProduct(){Title="Sword",Color="Green",价格=2}};结果:{Title="Boots",Color="Red",Price=1},{Title="Boots",Color="Black",Price=2},{Title="Sword",Color="Gray",Price=2}我知道我应该使用GroupBy或Distinct,但要了解如何获得所需的列表result=pr.GroupBy(g=>g.Title,g.Price).ToList();//不工作Listresult=pr.Distinct(...);请帮助它按所需属性分组并选择:Listresult=pr.GroupBy(g=>new{g.Title,g.Price}).Select(g=>g.First()).ToList();虽然新的匿名类型可以工作,但它可能更有意义,更具可读性,并且可以在您的方法之外使用,以创建自己的类型或使用元组。(其他时候它可能只需要使用分隔字符串:string.Format({0}.{1},g.Title,g.Price))Listresult=pr.GroupBy(g=>newTuple(g.Title,g.Price)).ToList();列表结果=pr.GroupBy(g=>newProductTitlePriceGroupKey(g.Title,g.Price)).ToList();至于得到你想要的结果集,提供的答案建议只返回第一个,也许这对你的目的有用,但理想情况下你需要提供一种聚合或忽略颜色的方法。例如,您可能更愿意以某种方式列出包含的颜色:Listresult=pr.GroupBy(g=>newTuple(g.Title,g.Price)).Select(x=>newProduct(){Title=x.Key.Item1,Price=x.Key.Item2,Color=string.Join(",",x.Value.Select(y=>y.Color)//"红色,绿色"}).ToList();在颜色的简单字符串属性的情况下,简单地连接它们可能是有意义的。如果你在那里有另一个实体,或者根本不想抽象掉该信息,那么最好有另一个实体拥有;类型的集合。例如,如果您要对标题和颜色进行分组,您可能需要显示平均价格或价格范围,而只需选择每组中的第一个即可阻止您这样做。以上就是C#学习教程:linqdistinctorall共享多个属性组的内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——Listresult=pr.GroupBy(g=>newTuple(g.Title,g.Price)).Select(x=>newProductGroup(){Title=x.Key.Item1,Price=x.Key.Item2,Colors=x.Value.Select(y=>y.Color)}).ToList();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
