var range = new List<int> {1, 2, 3, 3, 4, 5, 6, 78, 8}; //идэшники которые нужно удалить
//коллекция из которой будем удалять, если вы под id имели в виду индекс элемента
var collection = Enumerable.Range(0, 100).ToList(); //здесь мы просто создаем коллекцию, у вас она уже есть
collection = collection.Where((x,i)=> !range.Contains(i)).ToList(); //а вот самая мякотка здесь
//в случае если id - это поле некоторого объекта коллекции которую
//мы хотим почистить
var collection2 = Enumerable.Range(0, 100)
.Select(x=> new {Id = x, Value=x*10})
.ToList();
// то будет так:
collection2 = collection2.Where(x => !range.Contains(x.Id)).ToList();
public async Task DeleteUsersByIdAsync(IEnumerable<Int32> id_users)
{
using (REMOTE_OFFICE_3Entities db = new REMOTE_OFFICE_3Entities())
{
IEnumerable<User> delete_users = id_users
.Select(selector: id => new User { id = id })
.Select(selector: read => db.Users.Attach(entity: read));
db.Users.RemoveRange(entities: delete_users);
await db.SaveChangesAsync();
}
}
如果您通过实体使用数据库,那么我的解决方案将不起作用。
让我们来看看功能——我们不会从原始集合中删除任何东西,而只是用一个没有不必要元素的新集合替换它:
在
Entity Framework
没有其他方法的情况下:根据这个想法,参数中的对象没有被创建——只是整个树被翻译成
SQL
——所以不需要担心这个。以这种方式解决了这个问题(通过假对象):