linq'te bir string kullanmak

EDIT - Yani sorgulamaya çalıştığım dizgede bir/n vardı. Bilgisayarları severim.

Kategoriler adına göre bir kategorideki ürünleri almam gerekiyor. Kategori kimliğini kullanırsam işe yarar ...

from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryid == n  
select r

ama bu değil

from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryname == n  
select r

Ben de denedim ...

from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryname.Contains(n)  
select r

Hata yok, ancak satır döndürülmüyor, oysa kimliği kullandığımda satır döndürülüyor.

0
ikincisi için n bir id değeri doğru değil mi?
katma yazar renakre, kaynak
ikincisi için n bir id değeri doğru değil mi?
katma yazar renakre, kaynak
ürünler ve ürün kategorileri arasındaki ilişkiyi tanımlayan join nerede?
katma yazar Maciej Los, kaynak
Kategoriler bir koleksiyon mu?
katma yazar Maciej Los, kaynak
ürünler ve ürün kategorileri arasındaki ilişkiyi tanımlayan join nerede?
katma yazar Maciej Los, kaynak
Kategoriler bir koleksiyon mu?
katma yazar Maciej Los, kaynak
n, ilk durumda bir int, ikinci durumda da bir dizedir. sorguyu düz sql'de çalıştırmak aynı sonucu verir. Bunu şimdi biraz araştırıyorum.
katma yazar tintyethan, kaynak
n, ilk durumda bir int, ikinci durumda da bir dizedir. sorguyu düz sql'de çalıştırmak aynı sonucu verir. Bunu şimdi biraz araştırıyorum.
katma yazar tintyethan, kaynak
sorgulamaya çalıştığım dizgede bir/n vardı. jfc.
katma yazar tintyethan, kaynak
sorgulamaya çalıştığım dizgede bir/n vardı. jfc.
katma yazar tintyethan, kaynak
Eşitlik işe yaramalı, peki ya n büyük/küçük harfe duyarlı değeri ya da veritabanında sorgulamaya çalıştığınız sütun türü? ( varchar , nvarchar , metin )
katma yazar Adam Houldsworth, kaynak
Eşitlik işe yaramalı, peki ya n büyük/küçük harfe duyarlı değeri ya da veritabanında sorgulamaya çalıştığınız sütun türü? ( varchar , nvarchar , metin )
katma yazar Adam Houldsworth, kaynak
Sorgunuzda n nedir?
katma yazar Grundy, kaynak
Sorgunuzda n nedir?
katma yazar Grundy, kaynak
İstisna yoksa, sorgunun kendisinde neredeyse kesinlikle bir hatadır. Aynı sorguyu doğrudan SQL'de çalıştırmayı deneyin ve satır alıp almadığınızı görün.
katma yazar just.another.programmer, kaynak
İstisna yoksa, sorgunun kendisinde neredeyse kesinlikle bir hatadır. Aynı sorguyu doğrudan SQL'de çalıştırmayı deneyin ve satır alıp almadığınızı görün.
katma yazar just.another.programmer, kaynak
Veritabanı harmanlamanız büyük/küçük harf duyarlı mı?
katma yazar Biscuits, kaynak
Veritabanı harmanlamanız büyük/küçük harf duyarlı mı?
katma yazar Biscuits, kaynak

6 cevap

from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryname.Contains(n)  || n.Contains(pc.categories.categoryname)
select r

Bir deneyin, n olabilir, boş alan veya sekme gibi bazı ekstra karakterler içeriyorsa

1
katma
from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryname.Contains(n)  || n.Contains(pc.categories.categoryname)
select r

Bir deneyin, n olabilir, boş alan veya sekme gibi bazı ekstra karakterler içeriyorsa

1
katma

Yan tümcesinde dize karşılaştırması yapmanız gerekir, şu anda n öğenizin id değeri olabilir, bu nedenle n değişkeninizin dize değeri olduğundan emin olun

string n = "categoryname"  

from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryname == n  
select r

İkinci olası durum Ürün Kategoriniz olacak ve değerlerin toplanacağı

1
katma
@ Chris, açıklaman için teşekkür ederim ... Şerefe, Maciej
katma yazar Maciej Los, kaynak
@Chris, bu çok basit ... iki takım arasında açık bir birleştirme işleci yoksa, çapraz birleştirme (Kartezyen ürünü) ortaya çıkar. Yanlış mıyım?
katma yazar Maciej Los, kaynak
Aman Tanrım, @ Chris, sorgu performansından bahsediyorum. Çapraz birleştirme 'nin kullanılması OP tarafından tasarlanmayabilir. Kullanımı sorgulamıyorum, farkı göstereceğim ...
katma yazar Maciej Los, kaynak
@ Chris, bunun bir linq sorgusu olduğunu biliyorum. çapraz birleştirme yerine, iç birleştirme gibi görünüyor. OP bu soruyu Varlık çerçevesi olarak nitelendirdi, bu yüzden ... her iki "koleksiyon" arasında da bir ilişki olmalı.
katma yazar Maciej Los, kaynak
konumundan iki kez kullanılır, ancak join nerede? Derlememeli ...
katma yazar Maciej Los, kaynak
@ MaciejLos İki kaynağın birbiriyle ilgisi olmasa da, ikinci kaynak ilki sonucuna dayanıyorsa olur.
katma yazar juharr, kaynak
@ MaciejLos: Juharr'ın dediği gibi, eğer akraba değillerse. Bütün varlık çerçevelerinin amacı, veritabanı nesnenizin (yani db burada), tablolar arasındaki ilişki hakkında ihtiyaç duyduğu her şeyi bilmesidir. Sistem kurulumunda tanımlanmıştır. Bu nedenle, belki de kodun SQL olduğunu düşündüğünüzü düşündüm çünkü SQL'de her ilişkide bu ilişkileri tanımlamanız gerekiyor. Varlık çerçevesinde zaten oradalar, bu yüzden yukarıdaki kodun tamamen makul ve kusursuz bir deyimsel LINQ2SQL olması bu yüzden.
katma yazar Chris, kaynak
@ MaciejLos: Benim kafa karışıklığım, bunun çapraz bir katılım olduğunu düşündüğünüz şey. Sence çapraz birleştirildiğini ne düşünüyorsun? Görünen o ki, SQL, products , productcategoriler ve kategoriler 'de üç ilgili tablo var gibi görünüyor. Ürünler ve ürün kategorileri arasında belirli bir ilişki yoksa, r.productcategoriler 'in nasıl çalıştığını düşündüğünüzden emin değilim. Benzer şekilde pc.category ...
katma yazar Chris, kaynak
İlişkiler her sorguda tanımlanmayacak. Onlar kurulumun bir parçası. Kaynaklardan ikincisi, ilkinden gelen şeye ...
katma yazar Chris, kaynak
@ MaciejLos: Bunun SQL kodu olduğunu mu düşünüyorsun? Bu (bir bakışta) normal bir LINQ sorgusu gibi görünüyor ...
katma yazar Chris, kaynak

Yan tümcesinde dize karşılaştırması yapmanız gerekir, şu anda n öğenizin id değeri olabilir, bu nedenle n değişkeninizin dize değeri olduğundan emin olun

string n = "categoryname"  

from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryname == n  
select r

İkinci olası durum Ürün Kategoriniz olacak ve değerlerin toplanacağı

1
katma
konumundan iki kez kullanılır, ancak join nerede? Derlememeli ...
katma yazar Maciej Los, kaynak
@ Chris, açıklaman için teşekkür ederim ... Şerefe, Maciej
katma yazar Maciej Los, kaynak
@Chris, bu çok basit ... iki takım arasında açık bir birleştirme işleci yoksa, çapraz birleştirme (Kartezyen ürünü) ortaya çıkar. Yanlış mıyım?
katma yazar Maciej Los, kaynak
Aman Tanrım, @ Chris, sorgu performansından bahsediyorum. Çapraz birleştirme 'nin kullanılması OP tarafından tasarlanmayabilir. Kullanımı sorgulamıyorum, farkı göstereceğim ...
katma yazar Maciej Los, kaynak
@ Chris, bunun bir linq sorgusu olduğunu biliyorum. çapraz birleştirme yerine, iç birleştirme gibi görünüyor. OP bu soruyu Varlık çerçevesi olarak nitelendirdi, bu yüzden ... her iki "koleksiyon" arasında da bir ilişki olmalı.
katma yazar Maciej Los, kaynak
@ MaciejLos İki kaynağın birbiriyle ilgisi olmasa da, ikinci kaynak ilki sonucuna dayanıyorsa olur.
katma yazar juharr, kaynak
İlişkiler her sorguda tanımlanmayacak. Onlar kurulumun bir parçası. Kaynaklardan ikincisi, ilkinden gelen şeye ...
katma yazar Chris, kaynak
@ MaciejLos: Juharr'ın dediği gibi, eğer akraba değillerse. Bütün varlık çerçevelerinin amacı, veritabanı nesnenizin (yani db burada), tablolar arasındaki ilişki hakkında ihtiyaç duyduğu her şeyi bilmesidir. Sistem kurulumunda tanımlanmıştır. Bu nedenle, belki de kodun SQL olduğunu düşündüğünüzü düşündüm çünkü SQL'de her ilişkide bu ilişkileri tanımlamanız gerekiyor. Varlık çerçevesinde zaten oradalar, bu yüzden yukarıdaki kodun tamamen makul ve kusursuz bir deyimsel LINQ2SQL olması bu yüzden.
katma yazar Chris, kaynak
@ MaciejLos: Benim kafa karışıklığım, bunun çapraz bir katılım olduğunu düşündüğünüz şey. Sence çapraz birleştirildiğini ne düşünüyorsun? Görünen o ki, SQL, products , productcategoriler ve kategoriler 'de üç ilgili tablo var gibi görünüyor. Ürünler ve ürün kategorileri arasında belirli bir ilişki yoksa, r.productcategoriler 'in nasıl çalıştığını düşündüğünüzden emin değilim. Benzer şekilde pc.category ...
katma yazar Chris, kaynak
@ MaciejLos: Bunun SQL kodu olduğunu mu düşünüyorsun? Bu (bir bakışta) normal bir LINQ sorgusu gibi görünüyor ...
katma yazar Chris, kaynak

If n is integer ID & CategoryName is string then you are comparing wrong things.

0
katma

If n is integer ID & CategoryName is string then you are comparing wrong things.

0
katma