Kab*_*abi 1 .net c# linq exception-handling linq-to-sql
我尝试将SQL删除命令更改为LINQ.这是我的SQL命令:
DELETE FROM [TrackPoints]
WHERE [RouteFK] IN (SELECT RouteId
FROM Routes
WHERE UserId = @UserId)
Run Code Online (Sandbox Code Playgroud)
这是我写的LINQ代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
但在这一行我有一个错误:
aspnetdb.Trackpoints.DeleteOnSubmit(eigen.First());
Run Code Online (Sandbox Code Playgroud)
那说:
'System.Data.Linq.Table.DeleteOnSubmit(LINQ_Test.Trackpoint)'的最佳重载方法匹配有一些无效的参数
我该怎么办?
用这个:
var eigen = (from p in aspnetdb.Trackpoints
where p.RouteFK == k
select p).First();
Run Code Online (Sandbox Code Playgroud)
或者更短的:
var eigen = aspnetdb.Trackpoints.First(p => p.RouteFK == k);
Run Code Online (Sandbox Code Playgroud)
因为它返回 Trackpoint
虽然你的select p.TrackPointId回报Int.
var r = from r in aspnetdb.Routes
join p in aspnetdb.Trackpoints on p.RouteId equals r.RouteFK
where r.UserId == UID
select p;
foreach (var x in r)
{
aspnetdb.Trackpoints.DeleteOnSubmit(x);
}
aspnetdb.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
388 次 |
| 最近记录: |