【问题标题】:Select rows from datatable with distinct column values从数据表中选择具有不同列值的行
【发布时间】:2012-07-30 19:34:42
【问题描述】:

我有一个具有重复 ID 的数据表。

1 data moredata  4354
1 data moredata  4354
2 data moredaaata  4asdfdsa4
3 dasata edaaata  42342fdsa4
2 data moredaaata  4asdfdsa4

我想从该表中获取一个数据表,其中每个第一列值只有一行,如下所示:(不需要按顺序)

1 data moredata  4354
2 data moredaaata  4asdfdsa4
3 dasata edaaata  42342fdsa4

我该怎么做?

【问题讨论】:

  • 您对返回数据的查询有任何控制权吗?我认为SELECT DISTINCT 在您使用的任何查询上都会更有意义。
  • @CSharpDev,Distinct 将适用于所有列,对于示例数据,它将适用,但它可能会在 1 data moredata 5555 上失败,在这种情况下,它将返回两行 ID 为 1
  • @LittleBobbyTables 这不是来自 SQL,我无法控制我得到的结果。

标签: c# datatable


【解决方案1】:

您可以使用 LINQ 来查询数据表。在 ID 字段上使用 group by 并从结果集中选择 First。有点像..

var query = from t in dt.AsEnumerable()
            group t by t.Field<int>("ID") into g
            select g.First();

【讨论】:

  • 我们需要在答案上加上 LINQFTW 标签。
【解决方案2】:
List<string> tableColumns = new List<string>();
foreach (DataColumn column in currentTable.Columns)
    tableColumns.Add(column.ColumnName);
DataTable result = currentTable.DefaultView.ToTable(true, tableColumns.ToArray());

【讨论】:

  • 我认为这更可能是他正在寻找的东西。善用通用组合,允许任何用户根据需要指定数组。
【解决方案3】:

选择 DISTINCT Column1、Column 2 从表 1 在哪里......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2017-12-02
    • 2017-12-24
    • 2014-01-19
    相关资源
    最近更新 更多