2011-07-01 52 views
4

我在我的代碼隱藏中獲取數據庫表中的條目的ID,並試圖找到一個簡單的LINQ查詢來刪除基於ID的條目。簡單的LINQ查詢從DataContext中刪除其中ID == ID

以下是我有:然而

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

這給了我一個鑄造的錯誤,我想知道是否有更好的方式來做到這一點?我看過類似的問題,我看到的每個答案似乎都比這實際上更復雜,所以任何建議都會很棒!

回答

9

您現在有一個IQueryable<Item>,不與項目 - 使用Single()來獲得該項目本身:

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

這是假定一個匹配項(ID作爲主鍵),否則可以考慮使用的FirstOrDefault()First()用空,而不是檢查,或者如果你有項目的集合,只是刪除它們在一個循環:

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); 
}