2013-08-03 17 views
5

Ben MVC için yeni.mvc tıraş bıçağı foreach mevcut veri görünümü ile

html sayfamda veri sıralama uygulamak istiyorum.

public IEnumerable<PercConfigEntry> GetPercConfigEntries() 
{ 
    var results = from g in this.context.PercConfigEntry 
        where g.Key == "ConfigEntries" 
        select g; 
    return results; 
} 

Ve bir görünümü: Bu işler

@model IEnumerable<PercConfigEntry> 
@foreach (var config in Model) 
{ 
    ... 
} 

Ben bu kodla oluşturulan model var. Ama ben böyle sorgulamak için "OrderBy" eklediğinizde:

public IEnumerable<PercConfigEntry> GetPercConfigEntries() 
{ 
    var results = from g in this.context.PercConfigEntry 
        where g.Key == "ConfigEntries" 
        orderby g.ConfigName 
        select g; 
    return results; 
} 

o foreach üzerinde DataServiceQueryException atar.

Neyin var?

Şimdiden teşekkürler.

+0

Bunun MVC veya ustura ile ilgili bir şeyleri olduğundan şüphe duyuyorum. Tahminim, veri servisinizin sorgu sağlayıcısıyla ilgili bir sorun. GetPercConfigEntries() 'içinde' ToList() 'olarak adlandırırsanız, istisna orada gerçekleşmelidir. –

+0

'ToList()' aramayı deneyin ve sonra 'result.OrderBy (x => x.ConfigName)' – Nilesh

+0

'var results = (this.context.PercConfigEntry Burada g.Key ==" ifadesini kullanarak sıralamayı deneyin. ConfigEntries " select g) .OrderBy (o => o.ConfigName); – christiandev

cevap

2

Sorun, sorgu sağlayıcınızla ilgili bir şey var; belki sadece siparişi desteklemiyor. Daha sonra, yeniden emir

public IEnumerable<PercConfigEntry> GetPercConfigEntries() 
{ 
    var results = this.context.PercConfigEntry 
     .Where(g => g.Key == "ConfigEntries") 
     .AsEnumerable() 
     .OrderBy(g => g.ConfigName); 
    return results; 
} 

Bu olmadan sağlayıcısına üzerinde herhangi sipariş yürütülecek sorgu zorlar:

public IEnumerable<PercConfigEntry> GetPercConfigEntries() 
{ 
    var results = 
     (from g in this.context.PercConfigEntry 
     where g.Key == "ConfigEntries" 
     select g) 
     .AsEnumerable() 
     .OrderBy(g => g.ConfigName); 
    return results; 
} 

Veya akıcı sözdiziminde: Başka bilgi olmadan, bu tavsiye ederim Başka bir deyişle, — numaralı istemcideki AsEnumerable çağrısı, OrderBy (veya sonraki herhangi bir yöntem) istemcisinde değerlendirilecek şekilde sonuç kümesini sorgu sağlayıcısından etkin şekilde ayırır. Bu, tedarikçinin sipariş vermesine izin vermek kadar etkili değildir, ancak sağlayıcı siparişi desteklemiyorsa, bunu yapmanın tek yolu budur.

İlgili konular