linq查询组在一个字符串列表中

时间:2015-07-30 08:11:14

标签: c# linq generics

我对cq的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>。显式转换   存在(你是否错过演员表?)

5 个答案:

答案 0 :(得分:9)

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

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

有关详情,请参阅https://msdn.microsoft.com/en-us/library/vstudio/bb348436(v=vs.100).aspx

答案 1 :(得分:4)

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

...GlWBwxEs/edit?invite=CI-zzNYL&pli=1

我已经讨论了这个问题(var groupbyzipcodes = new HashSet<string>(zipcodes); vs HashSethere

答案 2 :(得分:2)

为此目的有专门的Linq方法:

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

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

答案 3 :(得分:2)

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

zipcodes.Distinct();

它将为您提供列表的uniq值

RGDS

答案 4 :(得分:1)

正如其他人已经回答的那样 - 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();

应该是

+-----+----------+   +-----+----------+-------+  +-----+----------+-------+
| id  |   A_id   |   | A_id|   B_id   | value |  | B_id|   B_id_  | value |
+-----+----------+   +-----+----------+-------+  +-----+----------+-------+
|    1|         5|   |    5|         1|     aa|  |    1|         2|   zzxx|
+-----+----------+   +-----+----------+-------+  +-----+----------+-------+
|    2|         3|   |    3|         3|     bb|  |    2|          |   vvyy|
+-----+----------+   +-----+----------+-------+  +-----+----------+-------+
                                                 |    3|         4|   bbll|
                                                 +-----+----------+-------+
                                                 |    5|          |   oopp|
                                                 +-----+----------+-------+
                                                 |    4|         5|   mmnn|
                                                 +-----+----------+-------+