如何使用linq查询在名称相同、Id不同的情况下获取第一个对象

如何使用linq查询在名称相同、Id不同的情况下获取第一个对象,linq,Linq,如果有重复的,我想得到第一个,如果名称相同,则丢弃所有内容 型号 var data = [ {id:1, name:"Jay"},{id:2, name:"Jay"} {id:3, name:"Jay"},{id:4, name:"Jay"} ] 希望获得 var result =[ {id:1, name:"Jay"} ] 您可以按name对它们进行分组,并从组中选择第一项 var re

如果有重复的,我想得到第一个,如果名称相同,则丢弃所有内容

型号

var data = [
{id:1, name:"Jay"},{id:2, name:"Jay"}
{id:3, name:"Jay"},{id:4, name:"Jay"} 
]

希望获得

var result =[
{id:1, name:"Jay"}
]

您可以按
name
对它们进行分组,并从组中选择第一项

var result = data.GroupBy(g => g.Name).Select(g => g.First()).ToList();

是否保证IGrouping的第一个元素在原始序列中首先出现?Good catch@Harald,根据:它应该保留顺序。我在第一个关键字System中遇到此错误。InvalidOperationException:LINQ表达式’(GroupByShapeExpression:KeySelector:(s.Name),ElementSelector:(EntityShapeExpression:EntityType:SiteValueBufferExpression:(ProjectionBindingExpression:EmptyProjectionMember)IsNullable:False)在使用该linq之前是否将JSon转换为对象?