DistinctBy不工作在C#/ Visual Studio 2012
我正在使用DistinctBy返回一个不同的列表。它以某种方式不接受该方法。DistinctBy不工作在C#/ Visual Studio 2012
List<LastLocation> tempLast = details.DistinctBy(x => x.deviceID).ToList();
这是一个工作项目,前几天我在使用Visual Studio 2008年时,我迁移项目框架4.0和我目前使用Visual Studio 2012,突然这已经开始引起问题。 下面是正在使用的命名空间和引用的程序集列表。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using COMMON;
using MySql.Data.MySqlClient;
using System.Data;
using System.Configuration;
using System.Xml.Linq;
我做错了什么?
DistincyBy
通过MoreLinq提供,而不是框架的一部分。检查你已安装并引用MoreLinq。
从哪里可以参考MoreLinq? – writeToBhuwan
您可以使用NuGet安装它(右键单击解决方案/项目并选择管理软件包)。 – Lloyd
+1谢谢..!它说,我需要等待7分钟,将其标记为答案.. :) – writeToBhuwan
试试这个:
details.Select(x => x.deviceID).Distinct().ToList();
-1:这不等同。它只返回deviceID,而不是整个位置。一个等价的查询将是'details.GroupBy(x => x.deviceID).Select(x => x.First())。ToList()' –
确定这是一个有点晚了,但是你不需要安装任何NUGET
包处理DistinctBy
请求。只需添加下面的代码行就可以将其指向许多预安装的引用之一。
using Microsoft.Ajax.Utilities;
一旦加入,你可以简单地把.DistinctBy(d => d.Name)
在任何结束返回的集合,类似于下面的例子。
var someVariableName = _repositoryName.GetListOfData().DistinctBy(d => d.Name).ToList();
通过“不接受”你实际上表示的方法,你不能编译它。这是因为您可能已经删除了所需的使用语句,例如: 'using System.Linq;' 其中“导入”了扩展方法。我想你的包含的第一个问题与项目设置或某事有关,或者只是修复对正确程序集的引用。无法获得更多信息,很难说明确切的问题是什么 –
DistinctBy不是标准Linq的一部分。既可以使用GroupBy + First,也可以从Morelinq获得实现 – adrianm
然后为什么它在VS2008中工作? – writeToBhuwan