Dot-Net
像實體框架中的運算符?
我們正在嘗試在實體框架中為具有字元串欄位的實體實現“LIKE”運算符,但似乎不受支持。有沒有其他人試圖做這樣的事情?
這篇博文總結了我們遇到的問題。我們可以使用包含,但它只匹配 LIKE 的最簡單的情況。組合 contains、startswith、endswith 和 indexof 可以讓我們到達那裡,但需要在標准萬用字元和 Linq to Entities 程式碼之間進行轉換。
這是一篇舊文章,但對於任何尋找答案的人來說,這個連結應該會有所幫助。如果您已經在使用 EF 6.2.x,請轉到此答案。如果您使用的是 EF Core 2.x,請回答這個問題
簡潔版本:
SqlFunctions.PatIndex方法 - 在所有有效的文本和字元數據類型上返回指定表達式中模式第一次出現的起始位置,如果未找到模式,則返回零
命名空間:System.Data.Objects.SqlClient 程序集:System.Data.Entity(在 System.Data.Entity.dll 中)
這個論壇文章中也出現了一些解釋。
我對 EF 真的一無所知,但在 LINQ to SQL 中,您通常使用 String.Contains 來表達 LIKE 子句:
where entity.Name.Contains("xyz")翻譯成
WHERE Name LIKE '%xyz%'(用於其他行為。
StartsWith)EndsWith我不完全確定這是否有幫助,因為當您說您正在嘗試實施LIKE 時,我不明白您的意思。如果我完全誤解了,請告訴我,我會刪除這個答案:)