문제

사용자가 양식을 제출할 때 데이터베이스에서 삭제할 레코드를 결정하려고합니다. 이 페이지에는 수정 전 레코드를 나타내는 2 개의 checkboxlist가 있고 그 이후에는 하나가 있습니다.

이렇게 삭제 해야하는 선택한 값을 쉽게 얻을 수 있습니다 ...

//get the items not selected that were selected before
var oldSelectedItems = from oItem in oldChklSpecialNeeds.Items.Cast<ListItem>()
                       where !(from nItem in newChklSpecialNeeds.Items.Cast<ListItem>()
                               where nItem.Selected
                               select nItem.Value).Contains(oItem.Value)
                           && oItem.Selected
                       select oItem.Value;

이제 나는 이런 일을하려고 노력하고 있지만 그것을 허용하지 않습니다 ...

var itemsToDelete = from specialNeed in db.SpecialNeeds
                           join oldSelectedItem in oldSelectedItems on specialNeed.SpecialNeedsTypeCd equals oldSelectedItem.Value
                           where specialNeed.CustomerId == customerId

각 항목에 대해 Foreach 루프와 .deleteonSubmit ()를 쉽게 사용할 수 있지만 LINQ의 기능을 사용하는 방법이 있다고 생각하고 내부 조인의 전체 쿼리 결과를 .deletealLonsubmit ()에 전달합니다.

//like so
db.SpecialNeeds.DeleteAllOnSubmit(itemsToDelete); 

어떤 아이디어?

도움이 되었습니까?

해결책

로컬 컬렉션은 contins () 메소드와 함께 LINQ에서 SQL로 사용할 수 있습니다. 당신은 그것을 바꿀 수 있습니다 가입하다 조항으로의 조항 어디 contaties () :

var itemsToDelete = from specialNeed in db.SpecialNeeds
                    where oldSelectedItems.Contains(specialNeed.SpecialNeedsTypeCd)
                       && specialNeed.CustomerId == customerId
                    select ...;

다른 팁

당신이 얻는 오류는 무엇입니까? SpecialneedStypecd와 OldSelectedItem.Value 사이의 유형 불일치입니까? 이 게시물의 두 번째 LINQ 문에서 SELECT를 생략 했습니까? 아니면 그 문제입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top