[英]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.