2017-04-10 95 views
0

自從我使用實體框架和LINQ以來已經有一段時間了。我正在嘗試執行SQL查詢。這可以在通過父表中的外鍵定義的一對多關係中正常工作。LINQ包含沒有創建一個類似的聲明

myEntity.Where(me => me.relatedEntity.Name.Contains("a"); 

這正確地轉換爲SQL中的一樣。但是,當我通過聯結表查詢多對多關係時,它會在SQL中創建一個equals語句。

var name = "bo"; 
myEntity.Where(me => me.Users.Select(u => u.Name).Contains(name)); 

我是否缺少明顯的東西?

感謝

+0

你正在檢查的第二個版本,如果名稱集合中的任何實體「包含」的確是相同的名稱。你應該使用'me.Users.Any(u => u.Name.Contains(name))' –

回答

1

這是正確的,在你第一次查詢的源是一個字符串,第二個來源是字符串的集合。我知道你在尋找的是這樣的:

var r=myEntity.Where(me => me.Users.Any(u => u.Name.Contains(name))); 

如果你想爲條件,即所有用戶包含一些字符串模式,然後使用All擴展方法,而不是Any

+0

Thankyou,它已經有一段時間了 – DavidB

+0

不客氣,很高興我可以幫忙;) – octavioccl