用Linq搜索

Phi*_*hil 4 c# linq optimization performance search

我有一个对象集合,每个对象都有一个int Frame属性.给定一个int,我想在集合中找到具有最接近Frame的对象.

这是我到目前为止所做的事情:

public static void Search(int frameNumber)
{
    var differences = (from rec in _records
                       select new { FrameDiff = Math.Abs(rec.Frame - frameNumber), Record = rec }).OrderBy(x => x.FrameDiff);

    var closestRecord = differences.FirstOrDefault().Record;

    //continue work...
}
Run Code Online (Sandbox Code Playgroud)

这很好,一切都很好,除了我的收藏中有200,000个项目,我经常调用这个方法.有没有相对简单,更有效的方法来做到这一点?

dtb*_*dtb 5

var closestRecord = _records.MinBy(rec => Math.Abs(rec.Frame - frameNumber));
Run Code Online (Sandbox Code Playgroud)

使用MoreLINQ的MinBy.