2012-02-23 13 views
5

を動作しません:LINQ - ダイナミックORDERBY句は、私がこのようなコードを持っている

//build query 
var shops = (from p in dataContext.shops 
let distance = dataContext.GetDistance(p.lat, p.lon, nearlat,nearlon) 
        join c in dataContext.shops_category on p.id equals c.poi_id 
        select new ShopsModel { p = p, distance = distance } 
         ); 
     } 
//add dynamic orderby 
if(somthig) 
    shops.OrderBy(distance) 
else 
    shops.OrderBy(p.name) 


//get records. 
return shop.Take(30).ToList() 

それは、[並べ替えを除いて正常に動作しています。生成されたSQLコードにはorderby句が含まれず、レコードはソートされません。

手伝ってくれてありがとう。

答えて

5

のOrderByは、基礎となるデータを変化させません - それは、適切な順序で列挙を返します。結果を店舗に割り当てる必要があります。

if (someCondition) 
{ 
    shops = shops.OrderBy(shop => shop.distance); 
} 
else 
{ 
    shops = shops.OrderBy(shop => shop.p.name); 
} 
1

はこれを試してみてください。

Shops=shops.OrderBy(distance); 
関連する問題