我想要做一個LINQ查詢,它可以將多個變量與一個字符串進行比較。我見過LINQ for LIKE queries of array elements,這很有幫助,但並不完全。我需要相反的。LINQ:單個謂詞中的多個LIKE子句
我想要做的是以下內容:比方說,我有一個Company
對象與Name
和Address
。我也有一個字符串keyword
。然後,我想在Name
或Address
的keyword
列表中找到所有Company
。在SQL這將是...
SELECT * FROM Company
WHERE Name LIKE '%keyword%' OR Address LIKE '%keyword%'
我一直在使用實體框架,我已經試過如下:context.Companies.Where(x => new string[] { x.Name, x.Address }.Contains(keyword)
,以及context.Companies.Where(x => new string[] { x.Name, x.Address }.Any(r => r.Contains(keyword))
,但是沒有成功。第一個給我一個IN
條款,第二個......我不知道它做了什麼,但它不給我我想要的。
對不起,我對錶達式沒有很深入的理解。我希望自己能夠從頭開始編寫自己的自定義表達式,但劃傷它我還不能......現在我可以幫助我嗎?
只是爲了方便和可讀性的緣故...我不想要一個完整的'||'列表 – matt
@matt:那麼,有些方法可以通過編程方式創建表達式(請參見http://www.albahari。 com/nutshell/predicatebuilder.aspx) - 但是你給出的情況只有兩個值,所以我絕對會*在那裏使用'||'。即使你創建的數組的名稱和地址在工作中的版本,我會說它比我的答案中的代碼更不可讀。如果你問過一個具有更多屬性的場景 - 或者具有可變數量的屬性 - 我會給出不同的答案。 –
啊...我明白了。那麼我寫這只是爲了說明的目的,我的對象不僅僅是兩個屬性,而且它將是一個系統範圍的實現(因爲我正在爲它進行搜索)。我以前看過那個網站,而且我看到了'.Or'這個東西,但是我仍然不知道如何使用它來將可插入到我當前的LINQ語句中的東西寫出來。 我沒有要求硬性和快速的代碼,但我有點不知道如何開始使用這些表達式......有點感覺就像重新學習C#一樣。 – matt