Linq查询组by在字符串列表中

本文关键字:字符串 列表 by 查询 Linq | 更新日期: 2023-09-27 18:05:34

我是c# linq查询的新手。我有一个字符串列表,我想得到一个新的列表或删除所有双字符串。

List<string> zipcodes = new List<string>();
zipcodes.Add("1234");
zipcodes.Add("1234");
zipcodes.Add("1234");
zipcodes.Add("4321");
zipcodes.Add("4321");
List<string> groupbyzipcodes =
(from zip in zipcodes
group zip by zip into newgroup
select newgroup.ToList());

不能隐式转换类型'System.collection.Generic.IEnumarable<System.Collections.Generic.List<string>''System.collections.Generic.List<string>。显式转换存在(您是否缺少cast?)

Linq查询组by在字符串列表中

您也可以在LINQ中使用distinct关键字:

var dedupedlist = zipcodes.Distinct().ToList();

更多信息请参见https://msdn.microsoft.com/en-us/library/vstudio/bb348436(v=vs.100).aspx

这是删除重复值的最有效方法

var groupbyzipcodes = new HashSet<string>(zipcodes);

我已经在这里讨论过这个问题(HashSet vs Distinct())

有一个专门的Linq方法:

var newList = zipCodes.Distinct().ToList();

https://msdn.microsoft.com/en-us/library/vstudio/bb348436 (v = vs.100) . aspx

如果你只有一个字符串列表,你可以使用distinct()

zipcodes.Distinct();

它会给你列表的唯一值

Rgds

正如其他人回答的那样-存在Distinct以获得与IEnumerable<T>不同的列表。

你的具体问题是你有一个ToList()在括号里,它应该在外面。

List<string> groupbyzipcodes =
(from zip in zipcodes
group zip by zip into newgroup
select newgroup.ToList())

应该是

List<string> groupbyzipcodes =
(from zip in zipcodes
group zip by zip into newgroup
select newgroup.Key).ToList();