Ben*_*her 5 linq vb.net list distinct
我有一个List(Of Hardware) - 调用List HWModels
类硬件具有以下属性:
通过读取CSV文件来填充列表,一旦填充完毕,我想根据ModelName返回不同的记录
我试过这样做如下:
(From a In HWModels Select a.ModelName).Distinct
Run Code Online (Sandbox Code Playgroud)
但这不对,因为我最终得到的只是ModelName的列表而没有别的.
如何让Distinct函数返回列表中的所有其他类成员?
Jon*_*eet 13
LINQ to Objects并没有提供任何可以"完全独立于投影"的东西.您可以按名称分组,然后获取每个组中的第一个元素,但这非常难看.
我的MoreLINQ提供了一种DistinctBy方法 - 在C#中你使用:
var distinct = HWModels.DistinctBy(x => x.ModelName).ToList();
Run Code Online (Sandbox Code Playgroud)
据推测,VB就是这样的
Dim distinct = HWModels.DistinctBy(Function(x) x.ModelName).ToList
Run Code Online (Sandbox Code Playgroud)
抱歉任何语法错误:(
小智 7
这将按首选属性对对象进行分组,然后选择每个对象中的第一个,删除重复项.
Dim newlist = HWModels.GroupBy(Function(x) x.ModelName).Select(Function(x) x.First).ToList
Run Code Online (Sandbox Code Playgroud)