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