亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL IN 運算符到 LINQ

SQL IN 運算符到 LINQ

C#
小怪獸愛吃肉 2023-07-23 14:23:43
我需要將此查詢轉換為 Linq 查詢SELECT DISTINCT (pf.Id)FROM    PF pf    LEFT JOIN FA fa on pf.id = fa.PFId    LEFT JOIN Fan f ON pf.FId = f.IdWHERE  pf.PId=2 AND fa.AId IN (1,26) AND fa.AId NOT IN(27)這是我到目前為止所要求的 LINQ 查詢var allFansSavedAsLeads =  _dbContext.PF                           .Where(e => e.F.S != null &&                           e.A.Any(x => x.AId==27 &&                            x.AId.Equals(1) /*&&                            x.AId != 27*/) &&                            e.PId == pId);我用這個得到零結果。
查看完整描述

3 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

我建議您創建兩個 Id 列表,分別代表可以包含的活動和需要排除的活動。像下面這樣使用它們:

List<int> IncludedIds = new List<int>(){1,26};
List<int> ExcludedIds = new List<int>(){27};
_dbContext.ProfileFans.Where(e => e.Fan.SNUrl != null && 
                             e.Activities.Any(x => IncludedIds.Any(x.ActivityId) && 
                                                   !ExcludedIds.Any(x.ActivityId) && 
                                                   e.ProfileId == profileId);

請注意:我使用的List<int>是因為給定的示例,您必須根據數據類型創建列表ActivityId


查看完整回答
反對 回復 2023-07-23
?
森林海

TA貢獻2011條經驗 獲得超2個贊

您不需要白名單和黑名單。要么是其中之一,要么是另一個。所以我正在制定一個白名單。如果允許的ActivityId是1或者26,那么根據定義它肯定不是27,所以沒有必要嘗試排除它。我正在使用int[]而不是List<int>考慮到白名單可能是靜態的,但List<int>如果您想動態修改它,請隨意將其更改為 a 。

int[] whiteList = { 1, 26 };
var allFansSavedAsLeads = _dbContext.ProfileFans.Where(pf =>
    pf.Fan.SNUrl.HasValue &&
    pf.Activities.Any(fa => whiteList.Contains(fa.ActivityId)));

如果您也想要 JOIN,您可能需要查看.Include(),但從您最初的 SQL 查詢來看,您似乎實際上并不需要連接表的內容。


查看完整回答
反對 回復 2023-07-23
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

您可以創建一個臨時ActivityListAS

var?List<int>?ActivityList?=?new?List<int>()?{1,?26}

并使用類似的東西

ActivityList.Contains(x?=>?x.ActivityId)
查看完整回答
反對 回復 2023-07-23
  • 3 回答
  • 0 關注
  • 209 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號