早上好,
我在使用EF查询时遇到问题。这就是我想要做的。
首先我要提取一个ID列表,如下所示(ID包含在x.MappingAccts实体中):
Entities.DB1.Mapping mapping = null;
using (var db = new Entities.DB1.DB1Conn())
{
mapping = db.Mappings.Where(x => x.Code == code).Include(x => x.MappingAccts).FirstOrDefault();
}
稍后,我试图针对上面提到的Id列表(基本上是IN子句)对不同的数据库进行查询:
using (var db = new Entities.DB2.DB2Conn())
{
var accounts = db.Accounts.Where(mapping.MappingAccts.Any(y => y.Id == ?????????)).ToList();
}
正如你所看到的,我只是对此有所了解。
基本上我需要做的是根据它的ID列查询Accounts表,并拉出与mapping.MappingAccts.Id列匹配的所有记录。
我发现的大多数示例很好地解释了如何针对单维数组执行此操作,但我希望比较特定列。
任何帮助都会很棒。
猪兔
答案 0 :(得分:1)
使用IEnumberable.Contains
生成IN子句从第一个DB1上下文,实现Id的列表
var idList = mapping.MappingAccts.Select(m => m.Id).ToList();
然后在第二个上下文中查询id的实现列表
var accounts = db.Accounts.Where(a => idList.Contains(a.Id)).ToList();
您可能遇到的唯一问题是您在第一个列表中获得的ID数量。您可以使用sql查询达到限制。
答案 1 :(得分:0)
这将给出包含MappingAccts
所包含的ID的帐户列表using (var db = new Entities.DB2.DB2Conn())
{
var accounts = db.Accounts.Where(s => mapping.MappingAccts.Any(y => y.Id == s.Id)).ToList();
}