简体   繁体   English

从不在MyList中的实体中选择 <T> (字段)使用实体框架

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM