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中使用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();