簡體   English   中英

如何使用 linq c# 從另一個列表優化嵌套循環和過濾

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

我正在嘗試過濾一個展平的嵌套循環並從另一個列表中過濾。 所以下面是我能夠做的。 我嘗試過這種方法,但是當我運行查詢時,它不會在數據庫中保存任何內容。 我需要幫助來檢查和忽略 Tasklist 表中的現有記錄(相同的 MemberId 和 Description)。

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

問題null exists var exist = db.TaskLists.Where(a => a.Description == item.n && a.MemberId == item.m); 返回一個IQueryable來描述您的查詢,但實際上還沒有對數據庫執行。

嘗試將行更改為:

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

這將執行查詢並檢查是否有滿足您查詢的單個項目。 如果根本沒有結果,查詢將返回null ,它將執行 if 語句中的代碼。

您的語句尚未執行查詢,您可以像這樣將 Where 更改為 Any:

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

Any返回數據類型為bool的 function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM