我正在搜索图片列表,我想找到“最合适”。即,如果图像集包含高于H
像素的成像器,我想获得高度大于H
的最短图像,如果图像集不包含高度大于H
的图像,那么我只想拍摄最高的整体图像。
这是我到目前为止所得到的:
var imageFile =
from f in imageObj.Files
orderby f.Height > height descending, f.Height ascending, f.Height descending
select f;
显然这不起作用 - 我无法弄清楚如何在那里设置条件。
有什么建议吗?
请注意,我的问题与this one不同,其中条件可以预先评估;我的取决于f
。
答案 0 :(得分:6)
order by f.Height > height ? f.Height : 1000000 - f.Height
首先将图像高于高度,然后按相反的顺序显示低于高度的图像。
答案 1 :(得分: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();
答案 2 :(得分:1)
如果文件高于某个高度进行排序,您可以按该高度的距离排序:
var imageFile =
from f in imageObj.Files
orderby f.Height > height descending, Math.Abs(f.Height - height) ascending
select f;