ArkaplanGarip davranışları endswith yöntem
Ben yalnızca bir sütun içeren bir tablo var: Adı. Orada sadece dört satır, içinde I
var email = "[email protected]";
Table.Where(x => email.EndsWith(x.Name));
sorgulamak durumunda
| Name |
| test1.com |
| test2.com |
| test3.com |
| test4.com |
Sorun
demek boş bir liste elde edersiniz. ama önce tüm satırları sorgulamak ve bu
var email = "[email protected]";
Table.ToList().Where(x => email.EndsWith(x.Name));
gibi bellekte nerede hesaplamak ben alırsınız bir liste doğrudur sadece test2.com hangi içerir.
ilk sorgu için oluşturulan SQL ı yerine denedim
SELECT "Extent1"."Name" AS "Name"
FROM "USER"."Table" "Extent1"
WHERE ((NVL(INSTR(REVERSE(:p__linq__0), REVERSE("Extent1"."Name")), 0)) = 1)
geçerli: p__linq__0 '[email protected]' ve SQLDeveloper sorguyu çalıştıran, sonuç doğrudur.
Ben endswith değiştirirseniz
() için İçeriyor Fazla Bilgi(), sorun gitmiş olacak. İçeren için Buraya oluşturulan SQL olduğu()
SELECT "Extent1"."Name" AS "Name"
FROM "USER"."Table" "Extent1"
WHERE ((NVL(INSTR(:p__linq__0, "Extent1"."Name"), 0)) > 0)
Eğer endswith nesi veya yöntemi TERS bir fikrin var mı?
Çevre
- EF5.0
- .NET4.5
- Oracle11g
- Bu cümle beni ilgilendiren ve 3
ayarlandığını (iki senaryo için) hatırlayın. Onun neden yaptığı SQL'i oluşturduğunu açıklayamıyorum ... ama ürettiğim her IQueryable ile kontrol etmek yaygın bir uygulamadır. – Derek