2013-10-15 2 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" 

내 연구 당신이 LINQ 쿼리를 사용하여 데이터를 조작 할 수 있습니다 보여줍니다 이후 vb.net에서 그를 작성하는 방법 만 잘 모르겠습니다 만 선택할 수 있습니다.

오, 내가 선택한 최상위 요소가있는 이유는 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 스프레드 시트가 있습니다. 컬렉션에 아이템이 몇 개인 지 알려주는 항목이 있습니다. 이 예제에서는 컬렉션의 숫자로 500을 갖는 1000 개의 행을 모두 갖습니다. 이것은 이것을 두 개의 분리 된 데이터 테이블로 나누어야 함을 의미합니다. 내가 할 일은 쿼리의 결과를 데이터 테이블에 추가하고 방금 사용했던 데이터를 삭제 한 후 데이터 테이블의 배열을 다듬어 다음 덩어리를 추가하여 중복을 피할 수있게하는 것입니다. 이것이 내가 생각해 낸 해결책이다. 더 쉬운 방법이 있는지 확실하지 않습니다. –

답변

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 
관련 문제