LINQ查询查找具有最接近数据变量的对象以查询输入变量

gwi*_*dry 1 c# linq min

我有一个List,UserObj有一个DateTime数据成员和一个字符串Name成员.我想在列表中找到具有给定Name InputName和最接近输入DateTime InputDT的DateTime的UserObj

名称和日期时间可能都会出现,但会有一个独特的解决方案.

我想过:

UserObj user = userObjList.Where(u => ((u.Name ==inputName) && (userObjList.Min())).ToList()[0];
Run Code Online (Sandbox Code Playgroud)

但不确定如何指定最低条件?

Tim*_*ers 8

按两个日期之间的绝对差值对它们进行排序,然后取第一个.

UserObj user = userObjList
    .Where(u => u.Name == inputName)
    .OrderBy(u => Math.Abs((u.Date - inputDT).TotalSeconds))
    .First();
Run Code Online (Sandbox Code Playgroud)

或使用MinBy扩展:

UserObj user = userObjList
    .Where(u => u.Name == inputName)
    .MinBy(u => Math.Abs((u.Date - inputDT).TotalSeconds));
Run Code Online (Sandbox Code Playgroud)