刪除項目我有一個看起來像對象:從列表,其中不*所有*位置
public class ListItem {
public int ItemId { get; set; }
public int LocationId { get; set; }
// ... other properties ...
}
我從數據庫加載這些項目(List<ListItem>
)的列表。這些由物品ID 和位置ID唯一。我碰巧知道總共只有10個位置(位置1到10)。
有沒有LINQ聲明我可以寫刪除不出現在的所有項目 10個地點?
我現在擁有的是一樣的東西:
myList.RemoveAll(x =>
// this line would need repeated 10 times to work!
!myList.Any(y => y.ItemId == x.ItemId && y.LocationId == 1) &&
!myList.Any(y => y.ItemId == x.ItemId && y.LocationId == 2)
// etc...
);
由於這只是一個檢查區域我要重複所有地區 - 不是很優雅的代碼。任何想法或幫助表示讚賞!
啊,是的,這是一個很好的觀點。該去喝咖啡了。 –
這是一個好主意!是否有一個性能分支用於使用相同的計數想法如下:'myList.RemoveAll(x => myList.Select(y => y.ItemId == x.ItemId).Count()<10);'? –
@drew_w,你可以將代碼縮小到myList.RemoveAll(x => myList.Count(y => y.ItemId == x.ItemId)<10);' –