我想对可能有一百万条记录进行更新。我喜欢 Linq,我在下面写了这个来尝试完成这个。我真的希望我写这个可怕的错误。跑了好几个小时。我用 T-sql 编写它,它在几分钟内运行。有没有更好的方法可以用 linq 做到这一点?
private static void UpdateZipCodes()
{
Console.WriteLine("Update Zip Codes Started");
DataDataContext _db = new DataDataContext();
var newBadZips = (from n in _db.NewCars
where n.loczip == null || n.loczip == ""
select n).ToList();
foreach (var bad in newBadZips)
{
string lZip = _db.Dealers.Where(x => x.DealerID == bad.DealerID).Select(x => x.Zipcode).SingleOrDefault();
bad.loczip = lZip;
_db.SubmitChanges();
}
Console.WriteLine("Update Zip Codes Finshed");
}
T-Sql 版本
UPDATE n
SET n.loczip = d.Zipcode
FROM NewCars AS n INNER JOIN
Dealers AS d ON n.DealerID = d.DealerID
where n.loczip is null or n.loczip = ''
我明白 linq 的明显之处在于做得更多。我想知道如何改进我的 linq 查询?
在我知道 T-sql 是完成此任务的正确方法的意义上,我并不想比较它们。这主要是为了让我更擅长使用 linq。我确信我会想在某一时刻以较小的规模做这样的事情,并希望在 linq 中正确地做到这一点。