从基于单列的数据表中获取重复行

时间:2014-06-13 02:06:15

标签: sql vb.net linq datatable

我正在尝试根据单列值从datatable获取行。我有FiledName, FieldType, TableName列名。

以下查询工作正常,但我只获得FieldName。不是所有列。

如何从下面获取所有列?

Dim duplicates = DataSourceTable.AsEnumerable().GroupBy(Function(i) i.Field(Of String)("FieldName")).Where(Function(g) g.Count() > 1).Select(Function(g) g.Key)
    DataSourceTable = New DataTable
    Dim row As DataRow
    For Each dup In duplicates
        row = DataSourceTable.NewRow
        'row(0) = dup// I want get all values columns with index
    Next

2 个答案:

答案 0 :(得分:0)

这里需要有两个步骤:一个用于获取重复的FieldName值,另一个用于获取您感兴趣的其余值。如果使用临时表,最简单的解决方案是:

INSERT INTO myTempTable(FieldName)SELECT FieldName FROM MySourceTable WHERE something = what GROUP BY FieldName HAVING count(*)> 1;

SELECT a.FieldName,a.FieldType,a.TableName FROM MySourceTable a JOIN myTempTable b ON(a.FieldName = b.FieldName)ORDER BY a.FieldName,a.TableName;

答案 1 :(得分:0)

如果你需要整行而不是只需要群组的按键,那么就不要只选择按键。

只需更改

Dim duplicates = DataSourceTable.AsEnumerable()
                                .GroupBy(Function(i) i.Field(Of String)("FieldName"))
                                .Where(Function(g) g.Count() > 1)
                                .Select(Function(g) g.Key)

Dim duplicates = DataSourceTable.AsEnumerable()
                                .GroupBy(Function(i) i.Field(Of String)("FieldName"))
                                .Where(Function(g) g.Count() > 1)