2011-07-01 12 views
4

コードビハインド内のデータベーステーブルのエントリのIDを取得していて、そのIDに基づいてエントリを削除する簡単なLINQクエリを検索しようとしています。ここでDataContextから削除する簡単なLINQクエリID == ID

は私が持っているものです。

DataContext.Items.DeleteObject((Item)DataContext.Items.Where(item => item.ItemId == selectedId)); 

しかし、これは私のキャストエラーを与え、これを達成するためのより良い方法がある場合、私は疑問に思って?私は似たような質問を見てきました。私が見るすべての答えはこれよりも複雑に思えるので、どんな提案も素晴らしいでしょう!そうでFirstOrDefault()First()を使用することを検討して、これは、単一の一致する項目(主キーとしてID)を前提としてい

var item = DataContext.Items.Where(item => item.ItemId == selectedId).Single(); 
DataContext.Items.DeleteObject(item); 

:アイテム自体を取得するためにSingle()を使用 -

答えて

9

現在IQueryable<Item>、ないとアイテムを持っていますnullの代わりにチェックするか、アイテムのコレクションを持っている場合は、単にループでそれらを削除します。

var items = DataContext.Items.Where(item => item.ItemId == selectedId); 
foreach(var item in items) 
    DataContext.Items.DeleteObject(item); 
2
DataContext.Items.DeleteObject((Item)DataContext.Items.Where(item => item.ItemId == selectedId).First()); 

をすることを忘れないでくださいエラーを防ぐには、チェックしているIDが実際のItemであることを確認する必要があります。これは次のようなものです。

var item = (Item)DataContext.Items.Where(item => item.ItemId == selectedId).FirstOrDefault(); 

if (item != null) { 
    DataContext.Items.DeleteObject(item); 
} 
関連する問題