Saya memiliki prosedur dalam SQL yang saya coba ubah menjadi Linq:
SELECT O.Id, O.Name as Organization
FROM Organizations O
JOIN OrganizationsHierarchy OH ON O.Id=OH.OrganizationsId
where OH.Hierarchy like '%/12/%'
Garis yang paling saya perhatikan adalah:
where OH.Hierarchy like '%/12/%'
Saya memiliki kolom yang menyimpan hierarki seperti / 1/3/12 / misalnya jadi saya hanya menggunakan% / 12 /% untuk mencarinya.
Pertanyaan saya adalah, apa yang setara dengan Linq atau .NET dengan menggunakan tanda persen?
5
suara untuk tag seperti operator . Bisakah saya meminta agar Anda menyarankan seperti sql sebagai sinonim ?Jawaban:
Anda juga dapat menggunakan
.StartsWith()
atau.EndsWith()
.sumber
StartsWith("abc")
akan dikonversi menjadiLIKE 'abc%'
danEndsWith("abc")
adalah cnoverted keLIKE '%abc'
.ToLower().Contains()
dll jika Anda ingin mengabaikan kasing. Apakah Anda ingin ini tentu saja tergantung pada apakah Anda mencoba untuk meniru LIKE dari DB dengan susunan case-case yang tidak sensitif atau tidak.Gunakan ini:
sumber
SqlMethods
menggunakan "notasi titik"?System.Data.Linq.SqlClient
namespace.Saya berasumsi Anda menggunakan Linq-to-SQL * (lihat catatan di bawah). Jika demikian, gunakan string.Contains, string.StartsWith, dan string.EndsWith untuk menghasilkan SQL yang menggunakan operator SQL LIKE.
atau
Catatan: * = jika Anda menggunakan ADO.Net Entity Framework (EF / L2E) di .net 3.5, perlu diketahui bahwa ia tidak akan melakukan terjemahan yang sama dengan Linq-to-SQL. Meskipun L2S melakukan terjemahan yang tepat, L2E v1 (3.5) akan menerjemahkan ke dalam ekspresi t-sql yang akan memaksa pemindaian tabel penuh pada tabel yang Anda query kecuali ada pembeda lain yang lebih baik di mana klausa Anda atau filter bergabung.
Pembaruan: Ini diperbaiki di EF / L2E v4 (.net 4.0), sehingga akan menghasilkan SEPERTI SQL seperti halnya L2S.
sumber
@
tanda tetapi saya menyadari ini mungkin hanya konvensi yang baik untuk diikuti.Jika Anda menggunakan VB.NET, maka jawabannya adalah "*". Berikut adalah di mana klausa Anda akan terlihat seperti ...
Catatan: "*" Cocok dengan nol atau lebih karakter. Ini adalah artikel msdn untuk operator Suka .
sumber
Yah indexOf bekerja untuk saya juga
sumber
Gunakan kode seperti itu
sumber
Inti NET sekarang
EF.Functions.Like
sumber
Jika Anda tidak cocok dengan string numerik, selalu baik untuk memiliki kasus umum:
sumber
Saya selalu melakukan ini:
Saya tahu saya tidak menggunakan pernyataan like tetapi berfungsi dengan baik di latar belakang apakah ini diterjemahkan ke dalam kueri dengan pernyataan like.
sumber
Coba ini, ini berfungsi baik untuk saya
sumber
sumber
Berisi digunakan dalam Linq, Sama seperti Suka digunakan dalam SQL.
. . .
Anda dapat menulis skrip SQL di Linq sebagai berikut:
sumber
Bagi mereka yang tumbang di sini seperti saya mencari cara untuk metode "Seperti SQL" di LINQ, saya memiliki sesuatu yang berfungsi dengan sangat baik.
Saya dalam kasus di mana saya tidak dapat mengubah Database dengan cara apa pun untuk mengubah susunan kolom. Jadi saya sudah menemukan cara di LINQ saya untuk melakukannya.
Saya menggunakan metode pembantu
SqlFunctions.PatIndex
tindakan penyihir mirip dengan operator SEPERTI SQL nyata.Pertama, saya perlu menghitung semua diakritik yang mungkin (kata yang baru saya pelajari) dalam nilai pencarian untuk mendapatkan sesuatu seperti:
dan kemudian di LINQ untuk contoh:
Jadi untuk kebutuhan saya, saya telah menulis metode Helper / Extension
Jika ada di antara Anda yang memiliki saran untuk meningkatkan metode ini, saya akan senang mendengarkan Anda.
sumber
Jauh terlambat, tapi saya melemparkan ini bersama untuk bisa melakukan perbandingan String menggunakan wildcard gaya Suka SQL:
sumber