在 SQL 中要获取列中的 DISTINCT 值,我会执行以下操作:
SELECT DISTINCT ColumnName FROM TableName;
我想做这样的事情,但是对于数据表的数据列。我知道这种方式(按照这个链接),它使用通常直观的方式来使用这样一个事实:我们可以检查我们是否包含(whatWeWant),如果不包含,我们可以将其添加到某些独特物品的容器。我想知道是否存在类似以下内容:
var uniqueObjects = dataTable.Columns[0].Distinct().ToList();
通过阅读Microsoft Docs,我还知道 DataColumn 类没有名为 Distinct 的方法,但如果你们知道类似的方法,请告诉我。如果没有,我将采用使用 Contains 的直观方式来创建一个 Distinct 扩展方法。
如果您将
System.Data.DataSetExtensions
添加到您的项目参考中:
using System.Data;
var uniqueObjects = dataTable
.AsEnumerable()
.Select(row => row[0])
.Distinct()
.ToList();
你可以这样做...
var uniqueObjects = dataTable.AsEnumerable().Select(x=>x.Field<ColumnType>("ColumnName")).Distinct().ToList();
万一有人像我一样看到这篇文章。基于这里的想法,我让它发挥作用。了解如何使用 Azure.Data.Tables 进行连接。我正在获取不同 PartitionKey 值的列表,以便我可以填充一个 DropDownList,然后用于搜索 PartitionKey 等于所选值的记录。
TableClient tableClient = new(storageConnection, loggingTableName);
var queryResultsLINQ = tableClient.Query<LogEntity>().AsEnumerable().Select(x => x.PartitionKey).Distinct().ToList();
public class LogEntity : ITableEntity
{
public string PartitionKey { get; set; } = string.Empty;
public string RowKey { get; set; } = string.Empty;
public string Message { get; set; } = string.Empty;
public string LogType { get; set; } = string.Empty;
public DateTime? LogDate { get; set; } = DateTime.MinValue;
public decimal LogTime { get; set; } = 0;
public DateTimeOffset? Timestamp { get; set; } = DateTime.MinValue;
public ETag ETag { get; set; } = ETag.All;
}