从数据表中的数据列中选择唯一值?

问题描述 投票:0回答:3

在 SQL 中要获取列中的 DISTINCT 值,我会执行以下操作:

SELECT DISTINCT ColumnName FROM TableName;

我想做这样的事情,但是对于数据表的数据列。我知道这种方式(按照这个链接),它使用通常直观的方式来使用这样一个事实:我们可以检查我们是否包含(whatWeWant),如果不包含,我们可以将其添加到某些独特物品的容器。我想知道是否存在类似以下内容:

var uniqueObjects = dataTable.Columns[0].Distinct().ToList();

通过阅读Microsoft Docs,我还知道 DataColumn 类没有名为 Distinct 的方法,但如果你们知道类似的方法,请告诉我。如果没有,我将采用使用 Contains 的直观方式来创建一个 Distinct 扩展方法。

c# select datatable unique datacolumn
3个回答
6
投票

如果您将

System.Data.DataSetExtensions
添加到您的项目参考中:

using System.Data;

var uniqueObjects = dataTable
     .AsEnumerable()
     .Select(row => row[0])
     .Distinct()
     .ToList();

4
投票

你可以这样做...

      var uniqueObjects =  dataTable.AsEnumerable().Select(x=>x.Field<ColumnType>("ColumnName")).Distinct().ToList();

0
投票

万一有人像我一样看到这篇文章。基于这里的想法,我让它发挥作用。了解如何使用 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.