是否有更有效的方法进行以下操作
var admin = //linq to get admin
List<Query> userQueries = db.Queries.Where(x=> x.User == user).ToList();
foreach (var item in userQueries)
{
if(!item.PrivateQuery)
{
var vm = new Query();
item.Id = vm.Id;
item.Name = vm.Name;
item.PrivateQuery = vm.PrivateQuery;
item.Sql = vm.Sql;
item.User = admin;
}
db.Queries.Remove(item);
}
我是LINQ的新手,发现自己经常编写以下代码。我想知道是否有更有效的方法来完成相同的操作?
答案 0 :(得分:5)
非常确定你可以改变它。
List<Query> userQueries = _db.Products.Where(x => x.User == user && !x.PrivateQuery).ToList();
db.Queries.RemoveRange(userQueries);
答案 1 :(得分:0)
DotNetHitMan已经回答了,但另一个选择是执行T-SQL语句:
db.Database.ExecuteSqlCommand("DELETE FROM Queries WHERE USER = {0} AND PrivateQuery = {1}", user, false);
答案 2 :(得分:0)
如果用户是ID?您已经获得了单个用户,所以这样做
var userQueries = db.Queries.Find(x=> x.User == User && !x.PrivateQuery);
db.Queries.Remove(userQueries);