DistinctBy无法在C#/Visual Studio 2012中工作

本文关键字:Studio 2012 工作 Visual DistinctBy | 更新日期: 2023-09-27 18:28:23

我正在使用DistinctBy返回一个不同的列表。不知何故,它不接受这种方法。

List<LastLocation> tempLast = details.DistinctBy(x => x.deviceID).ToList();

这是几天前我使用VisualStudio2008时的一个工作项目。我将该项目迁移到了Framework 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;

我做错什么了吗?

DistinctBy无法在C#/Visual Studio 2012中工作

编辑:2023年1月3日

.NET 6以后版本提供了现成的DistinctBy。假设您使用的是.NET的LTS版本,我建议您使用这种方法,而不是下面的方法。

旧答案

您不需要安装任何Nuget程序包来处理DistinctBy请求。只需添加下面的代码行,就可以将其指向许多预装参考中的一个。

using Microsoft.Ajax.Utilities;

从那里,在任何返回的集合的末尾添加.DistinctBy(d => d.Name),类似于下面的示例。

var foo = _repository.GetList().DistinctBy(d => d.Name).ToList();

DistincyBy是通过MoreLinq提供的,而不是框架的一部分。检查您是否安装并引用了MoreLinq。

DistinctBy不是Linq的一部分。也许您缺少MoreLinq的NuGet包,或者您没有包含自己的扩展方法。

试试这个:

details.Select(x => x.deviceID).Distinct().ToList();