簡體   English   中英

EF6 IN子句的特定屬性

[英]EF6 IN clause on specific properties

早上好,

EF查詢出現問題。 這就是我想要做的。

首先,我像這樣拉出一個ID列表(在包含的x.MappingAccts實體中找到ID列表):

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列匹配的記錄。

我發現的大多數示例都很好地解釋了如何針對單個維數組執行此操作,但是我正在尋找比較特定列的方法。

任何協助都會很棒。

豬兔

使用IEnumberable生成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查詢達到限制。

這將給出具有MappingAccts包含的ID的帳戶列表

using (var db = new Entities.DB2.DB2Conn())
{
    var accounts = db.Accounts.Where(s => mapping.MappingAccts.Any(y => y.Id == s.Id)).ToList();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM