5

次のようなコードがあります。

//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()

OrderBy 以外は正常に動作します。生成された SQL コードに orderby 句が含まれておらず、レコードがソートされていません。

何か案が?手伝ってくれてありがとう。

4

2 に答える 2

5

OrderBy は基になるデータを変更しません。適切な順序で列挙可能なものを返します。結果をショップに割り当てる必要があります。

if (someCondition) 
{
  shops = shops.OrderBy(shop => shop.distance);
}
else 
{
  shops = shops.OrderBy(shop => shop.p.name);
}
于 2012-02-23T09:08:51.600 に答える
1

これを試して:

Shops=shops.OrderBy(distance);
于 2012-02-23T09:06:42.957 に答える