I try to change a SQL Delete command into LINQ. this is my SQL Command:
DELETE FROM [TrackPoints]
WHERE [RouteFK] IN (SELECT RouteId
FROM Routes
WHERE UserId = @UserId)
and this is the LINQ code that I’ve written:
int UID =1;
FirstDataContext aspnetdb = new FirstDataContext();
var res1 = from q1 in aspnetdb.Routes
where q1.UserId == UID
select q1.RouteId;
foreach (var k in res1)
{
var eigen = from p in aspnetdb.Trackpoints
where p.RouteFK == k
select p.TrackPointId;
aspnetdb.Trackpoints.DeleteOnSubmit(eigen.First());
aspnetdb.SubmitChanges();
}
but in this line I have an error:
aspnetdb.Trackpoints.DeleteOnSubmit(eigen.First());
that said:
The best overloaded method match for ‘System.Data.Linq.Table.DeleteOnSubmit(LINQ_Test.Trackpoint)’ has some invalid arguments
What should I do?
Use this:
or what is shorter:
because it returns
TrackpointWhile your
select p.TrackPointIdreturnsInt.