使用Linq更有效的方式? (CRUD操作)

时间:2015-08-11 19:44:21

标签: c# asp.net-mvc linq

是否有更有效的方法进行以下操作

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的新手,发现自己经常编写以下代码。我想知道是否有更有效的方法来完成相同的操作?

3 个答案:

答案 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);