Reputation: 924
I have this code below a delete query using linq. But it feels like a long method?. Is there any alternative way to do this?.
var ListOfData = (from a in db.Table1
join b in db.Table2 on a.Table1Id equals b.Table2Id
where a.Table1Id == (param) select a)
.ToList();
foreach(var item in ListOfData )
{
var DelRecord = (from a in db.Table1
join b in db.Table2 on a.Table1Id equals b.Table2Id
where a.Table1Id == item.TableId select a)
.FirstOrDefault();
db.Table1.DeleteObject(DelRecord);
db.SaveChanges();
}
Upvotes: 0
Views: 2238
Reputation: 1561
You can remove the second query, you already have the data you need.
var ListOfData = (from a in db.Table1
join b in db.Table2 on a.Table1Id equals b.Table2Id
where a.Table1Id == (param) select a)
.ToList();
foreach(var item in ListOfData )
{
db.Table1.DeleteObject(item);
}
db.SaveChanges();
If you're using Entity Framework 6, they have introduced RemoveRange()
method.
var ListOfData = (from a in db.Table1
join b in db.Table2 on a.Table1Id equals b.Table2Id
where a.Table1Id == (param) select a)
.ToList();
db.Table1.RemoveRange(ListOfData);
db.SaveChanges();
Upvotes: 2