[c#]查找最接近的值数组列表与 linq 中吗?

标签: Linq C#
发布时间: 2017/2/28 23:05:18
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个像这样的列表︰

    public static List<int[]> list = new List<int[]>();

enter image description here

此外还有变量的命名的 X,X 可以取任何值。我想要找到最亲密的和较小值对中的 X list[?][1] 。例如︰

如果 X 是 1300年,我想要列表索引︰ 1。 或 X 是 700,就要采取指数︰ 0.我怎么可以这样通过 linq?或者,是否有任何其他解决办法?

在此先感谢。

解决方法 1:

你可以用以下的方式 (代码段假设,该列表不为空)

var x = 700;
var result = list.Select((subList, idx) => new { Value = subList[1], Idx = idx })
                 .Where(elem => elem.Value < x)
                 .Select(elem => new { Diff = Math.Abs(x - elem.Value), elem.Idx })
                 .OrderBy(elem => elem.Diff).FirstOrDefault();

if (result != null)
{
    return result.Idx;
}

// case - there is no such index
赞助商