0

EF で表現する方法がわからない比較的単純なクエリがあります。

SELECT BrandName,
    CASE BrandName
      WHEN 'LG' THEN 1
      WHEN 'Samsung' THEN 2
      WHEN 'Sony' THEN 3
      ELSE 100
    END as BrandWeight
FROM Brands

基本的に、各ブランドの「重量」を含むブランドのリストを返す必要があります-重量は実行時に定義されます(および重量のあるブランドのリスト)。

これは非常に単純化された例であることに注意してください。実際には、多くのレガシー コードを含む複雑な e コマース Web サイトがあります。最近、クライアントから、ブランドまたはその他の条件に基づいて、特定の製品を最初に表示するオプションを追加するよう依頼されました。そして、ページネーション、検索など、触れたくないロジックがたくさんあるので、その「重み」を最初の「選択」クエリに追加し、「重み」で並べ替えて、残りを行うというのが私の考えです。ロジックの。

4

1 に答える 1

0

最悪のシナリオ:

from s in something
select new 
           {s.BrandName, 
             BrandWeight = s.BrandName == "LG" 
                                             ? 1 : s.BrandName == "Samsung" 
                                             ? 2 : s.BrandName == "Sony" 
                                             ? 3 : 100}

基本的に、連鎖することができif else、それはうまくいくはずですが、それは「醜い」です

于 2013-06-29T20:50:20.870 に答える