2

我正在搜索图像列表,我想找到“最合适的”。即,如果图像集包含一个比H像素高的成像器,我想获得高度大于的最短H图像,如果图像集包含高度大于 的图像H,那么我只想获取最高的整体图片。

这是我到目前为止所得到的:

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 回答