[英]Select from entity where not in MyList<T>(field) using Entity Framework
I have some code to check if my version field in DB is contained in any of item in MyList<EntityPoco>
. 我有一些代码来检查数据库中的版本字段是否包含在
MyList<EntityPoco>
中的任何项目中。
I want to know if there is a better way or simpler method to do this than what I already have: 我想知道是否有比我现有的方法更好或更简单的方法:
List<Model.Job> jobs = mapperJobs.Map(dt).ToList();
bool itemExists = false;
foreach (Model.Job job in jobs)
{
var result = db.Jobs.Where(a => (a.Version == job.Version));
// If the item exists move on.
if (result.Any())
{
itemExists = true;
break;
}
// Else we need to insert a new record in the db
if (!itemExists)
{
db.Jobs.Add(job);
}
} // ... db save changes after adding everything we want
You can't do a join in EF to an in-memory collection, bout you can extract a list of values and use Contains
: 您无法在EF中加入内存中的集合,但是您可以提取值列表并使用
Contains
:
var jobVersions = jobs.Select(job => job.Version).ToArray();
var result = db.Jobs.Where(a => jobVersions.Contains(a.Version));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.