C# 如何保留第一组值的值并从列表中删除所有其他值
我有重复的C# 如何保留第一组值的值并从列表中删除所有其他值,c#,C#,我有重复的名称是针对不同的标准来的,如下所示 var lstData = new List<Data> { new Data {Name = "A", Standard = "sd1"}, new Data {Name = "B", Standard = "sd1"}, new Data {Name = "C", Standard = "sd1"}, new Data
名称
是针对不同的标准
来的,如下所示
var lstData = new List<Data>
{
new Data {Name = "A", Standard = "sd1"},
new Data {Name = "B", Standard = "sd1"},
new Data {Name = "C", Standard = "sd1"},
new Data {Name = "A", Standard = "sd2"},
new Data {Name = "B", Standard = "sd2"},
new Data {Name = "C", Standard = "sd2"},
};
这里
Name
和standard
的所有值都是动态的(我的程序每次运行的值都不同),这里我给出的值A、B、C、std1、std2只是样本值。您可以通过Name
属性对所有项进行分组,然后从每组中获取第一个项:
List<Data> results = lstData
.GroupBy(data => data.Name)
.Select(group => group.First())
.ToList();
List results=lstData
.GroupBy(数据=>data.Name)
.Select(group=>group.First())
.ToList();
您可以按名称
属性对所有项目进行分组,然后从每组中选取第一个
项目:
List<Data> results = lstData
.GroupBy(data => data.Name)
.Select(group => group.First())
.ToList();
List results=lstData
.GroupBy(数据=>data.Name)
.Select(group=>group.First())
.ToList();
列表
有一个方法,该方法接受定义要删除哪些元素的。因此,获取第一个值,然后删除任何不匹配的内容:
var firstStandard = lstData[0].Standard;
lstData.RemoveAll(d => d.Standard != firstStandard);
这可能会比Rufus给出的答案(取决于列表的大小)执行得稍快一些,因为您不会多次遍历整个列表。list
有一个方法,该方法接受定义要删除哪些元素的。因此,获取第一个值,然后删除任何不匹配的内容:
var firstStandard = lstData[0].Standard;
lstData.RemoveAll(d => d.Standard != firstStandard);
这可能会比Rufus给出的答案(取决于列表的大小)执行得稍快一些,因为您不会多次遍历整个列表。谢谢,但我无法硬编码std2。这些只是样本值。我的价值观不是fixed@user584018我想我明白了。我更新了我的答案。谢谢,但我不能硬编码std2。这些只是样本值。我的价值观不是fixed@user584018我想我明白了。我更新了我的答案。