2013-10-15 94 views
0

我已經完成了關於如何從數據表中刪除行的研究。使用linq查詢結果刪除數據表數據

Dataset.Datatable.Rows(0).Delete() 

現在的問題是我需要從我的linq查詢中刪除特定的數據。

Dim qy = From rows In loadedData 
Where rows.Field(Of Double)("count") = elem 
Take elem 
Select ("count") 

我需要做的是刪除這個linq查詢結果中的行。

"Delete top elem from loaded data where count = elem" 

我只是不知道如何寫在vb.net,因爲我的研究表明,你不能操縱使用LINQ查詢數據時,你只能選擇它。

哦,我有選擇頂部elem的原因是因爲elem可以複製,所以我可以有500行和500行的計數。所以我使用這個查詢來獲得第一個500行,然後刪除它,所以當我再次運行查詢時,我沒有收到重複的數據。

任何幫助,將不勝感激。

+0

重複部分不清楚。如果兩行具有相同的'count = elem',是否只想刪除一行?然後,您需要'GroupBy'計數並使用'Skip(1)'僅保留每個組的一行。 –

+0

我不確定你是否在別的地方使用這個Linq查詢,但是,如果沒有,我想象你可以做的就是讓Linq查詢與你目前所擁有的相反 - 「Where rows.Field(Of Double) (「count」)<> elem',然後做一些像'Dataset.Datatable = MyQuery.CopyToDataTable' - 而不是刪除行,使用Linq來獲取想要保留的行。希望這是有道理的。 –

+0

舉例:我有一個有1000行的excel電子表格。我有一個專欄讓我知道收藏中有多少物品。在這個例子中,我有1000個行,其中有500個作爲集合中的數字。這意味着我必須將其分解成兩個單獨的數據表。我要做的是將查詢結果添加到數據表中,刪除剛纔使用的數據,然後重新設置我的數據表數組以添加下一個塊以避免重複。這是我提出的解決方案。不知道是否有更簡單的方法 –

回答

1
Dim toDelete = From row In table 
       Let count = row.Field(Of Double)("count") 
       Where count = elem 
       Select row 
       Take elem 

For Each row As DataRow in toDelete 
    row.Delete() 
Next 
相關問題