2009-06-13 24 views
39

LityQ varlıklarını kullanarak bir arama sayfası oluşturmaya çalışıyorum, ancak aşağıdaki kod l.t.e hakkında bana bir çalışma zamanı hatası veriyor. 'Boolean StartsWith() öğesini tanımayan. Kod sadece iyi derler. StartsWith'in depolanmış bir proba filtrelenmesini sevketmekten daha iyi nasıl kullanabilirim?Varlıklar ve String için LINQ ile ilgili sorun.SaytsWith

return from dp in dents.DirectoryPersonEntrySet 
      where 
       ((dp.LastName.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) || 
       (dp.Department.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) || 
       dp.Extension.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) 
      select dp; 
+0

'Aşağıdaki kodu' gönderebilir misiniz? Yoksa konu tam kod mu? Boolean.StartsWith yerine String.StartsWith mi demek istiyorsunuz? –

+0

@Rutger, teşekkürler, göndermek ve kodu unutmak için çok hızlı oldu. İmzayı da düzelttim. – ProfK

+0

Aşırı miktarda en az 6 parantez var ve hala işlev prototipini ve sınıf tanımını kaçırıyoruz ... – em70

cevap

77

EF'in String Stringer parametresini alan StartsWith aşırı yüklenmesini desteklemediğini tahmin ediyorum. searchTerm da küçük olduğundan emin olmak sonra

dp.LastName.ToLower().StartsWith(searchTerm) 

ve:

dp.LastName.StartsWith(searchTerm) 

ya:

O startswith, endswith ve İçeriyor, belki deneyebileceğiniz desteklemelidir .

+2

Ölü sağ, tüm dize seçeneği atıyor EF – ProfK

+0

Çekicilik olarak çalışıyor, Teşekkürler –

+1

Doğru tahmin edildi, ancak SQL'e çevrildiğinde büyük/küçük harfe duyarsız. – marsze

İlgili konular