我有一个List,它包含我要删除的集合中的许多对象的PK ID。有谁知道如何编写单个查询来检索这些对象?
例如:
IList<int> objectList; // populated with int Primary key Ids
using (MyEntities context = new MyEntities()){
var result = context.MyObjectCollection.Where(obj=> obj.ID IN objectList);
foreach(var item in result){
context.DeletObject(item);
}
context.SaveChanges();
}
非常感谢任何帮助!
答案 0 :(得分:1)
var result = context.MyObjectCollection.Where(obj=> objectList.Contains(obj.ID));
答案 1 :(得分:1)
Mel的答案不起作用,因为在.NET 3.5 SP1中,EF不知道如何将list.Contains(...)转换为T-SQL。虽然这是4.0版本。
解决方法是手动生成一个大的OR查询,即
Where(obj => obj.ID == item1 || obj.ID == item2 ....)
这是我写的一个提示,这很简单:
Tip 8 - How to write where IN style queries using LINQ to Entities
希望这有帮助
亚历克斯詹姆斯实体框架小组 - 阅读我的Entity Framework Tips
答案 2 :(得分:0)
this.Devices.Update(o => new Device() { LastOrderRequest = DateTime.Now, Description = "teste" }, o => o.Id == 1);