2014-06-13 82 views
0

我想根據單列值從數據表中獲取行。我有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 

回答

0

你需要有兩個步驟,在這裏:一個得到重複字段名的值,而另一個讓你感興趣的其餘值,最簡單的解決方案,如果使用臨時表:

INSERT INTO myTempTable(FieldName)SELECT FieldName FROM MySourceTable WHERE something = whatever 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;

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) 
相關問題