2

画像のリストを検索していて、「最適なもの」を見つけたいと思っています。つまり、画像セットにピクセルよりも高いイメージャが含まれている場合は、より高い高さの最も短い画像Hを取得したいのですが、画像セットに。よりも高い高さの画像が含まれていない場合は、全体として最も高い画像を取得したいだけです。画像。HH

これが私がこれまでに得たものです:

var imageFile =
    from f in imageObj.Files
    orderby f.Height > height descending, f.Height ascending, f.Height descending
    select f;

明らかにこれは機能しません-条件をそこに入れる方法がわかりません。

助言がありますか?


私の質問は、条件を事前に評価できるこの質問とは異なることに注意してください。私はに依存していfます。

4

3 に答える 3

6

order by f.Height > height ? f.Height : 1000000 - f.Height

最初に高さより高い画像に移動し、次に高さより低い画像を逆の順序で移動します。

于 2012-09-07T02:39:07.510 に答える
1

タイプミスで申し訳ありませんが、コンパイラが手元にありません。これで動作しますか?

>、orderBをすべて取得し、最初のものを取得します。nullの場合は、最大値を取得しますか?

  var greaterThan = imageObj.Files.Where( f => f.Height > height );
         var imageFile = greaterThan.OrderBy( f => f.Height ).FirstOrDefault() 
                     ??  imageObj.Files.OrderBy( f => f.Height ).FirstOrDefault();
于 2012-09-07T02:42:29.620 に答える
1

ファイルが特定の高さを超えているかどうかで並べ替えた後、その高さからの距離で並べ替えることができます。

var imageFile =
    from f in imageObj.Files
    orderby f.Height > height descending, Math.Abs(f.Height - height) ascending
    select f;
于 2012-09-07T03:12:36.037 に答える