Linq扩展方法 - 如何获取与我的集合中的项目相同的项目列表?

时间:2012-09-15 11:45:30

标签: linq entity-framework collections ef-code-first extension-methods

我有这样的事情:

public bool Function(IEnumerable<MyObject> MyObj)
{
    var context = new ContextDb();
    var MyObjFromContext = context.MyObjects.Where(obj => obj == MyObj) //that does not compile!
}

在评论部分,我无法进行obj == MyObj比较,因为obj是单个项目,MyObj是项目列表。

那么我怎样才能获得等于MyObjFromContext的{​​{1}},但是来自上下文?

1 个答案:

答案 0 :(得分:1)

您可能需要使用主键进行查询:

var ids = MyObj.Select(o => o.Id).ToArray();
var MyObjFromContext = context.MyObjects.Where(obj => ids.Contains(obj.Id)).ToList()

显然,此代码假定您的对象具有名为Id的“标准”整数主键