如何优化嵌套循环并使用 linq c# 从另一个列表中过滤

How do optimize nested loop and filter from another list using linq c#

我正在尝试过滤扁平嵌套循环并从另一个列表中过滤。所以下面是我能够做的。我尝试过这种方法,但是当我 运行 查询时,它不会在数据库中保存任何内容。我需要帮助来检查和忽略任务列表 table.

中的现有记录(相同的 MemberId 和描述)
var addedtop = from a in db.TaskLists select new {a.MemberId,a.Description};
var membtasks = from m in members
                        from n in tasks
                        select new { m, n };

       
        TaskList taskList = new TaskList();
        foreach (var item in membtasks)
        {
            var exist = db.TaskLists.Where(a => a.Description == item.n && a.MemberId == item.m);
            if(exist == null)
            {    
            taskList .Description = item.n;
            taskList .MemberId = item.m;
            db.taskList .Add(taskList );
            db.SaveChanges();

            }
       }
        return Redirect(url);

问题是 exists 永远不会 nullvar exist = db.TaskLists.Where(a => a.Description == item.n && a.MemberId == item.m); returns 行 IQueryable 描述了您的查询,但尚未针对数据库实际执行。

尝试将行更改为:

var exist = db.TaskLists.Where(a => a.Description == item.n && a.MemberId == item.m).SingleOrDefault();

这将执行查询并检查是否有满足您查询的单个项目。如果根本没有结果,查询 returns null 将执行 if 语句中的代码。

你的语句没有执行查询,你可以把Where改成Any这样:

var exist = db.TaskLists.Any(a => a.Description == item.n && a.MemberId == item.m);

Any returns数据类型为bool

的函数