繁体   English   中英

C#确定字典中的值

[英]C# Determining value in dictionary

我有一个字典first<string, double> ,其双精度值范围在0到1之间,我想制作另一个仅包含10个值的字典,但这些字典距0.5的值最大。 首先,我正在考虑制作字典asc / desc,但是如果值在desc中大约是10 x 0.9,而在0.45左右时该怎么办。 按照升序排列,那么我只想获得更高的值,因为0.45距离0.5仅为0.05,而0.9距中心的距离为0.4。

字典中有什么方法可以做到这一点,或者我需要像这样循环编写代码:

abs(first.Value-0.5),然后使用相同的键将此值添加到新字典中,并使用.Take(10)?

var second = first.OrderByDescending(kvp => Math.Abs(kvp.Value - 0.5))
                  .Take(10)
                  .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
Dictionary<string, double> firstDic = new Dictionary<string, double>();
// fill

Dictionary<string, double> secondDic = (from e in firstDic
                                        let distance = Math.Abs(e.Value - 0.5)
                                        orderby distance descending
                                        select e).Take(10).ToDictionary(e => e.Key, e => e.Value);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM