使用LINQ,在集合中的字典中查找项属性的最小值

时间:2012-04-13 18:21:27

标签: c# linq linq-to-objects

public class Item
{
  public double findMe{ get; set; } 
  public int? iMayBeNull { get; set; }
}

public Dictionary<int, ICollection<Item>> TheDictionary{ get; set; }

...

TheDictionary dict = new Dictionary<int, ICollection<Item>>();

我正试图找到“findMe”的最小值,其中“iMayBeNull”在所有“dict”的集合中为

我似乎无法绕过这一个。

非常感谢任何指导。

2 个答案:

答案 0 :(得分:7)

使用.SelectMany将所有集合合并为一个大序列,然后只使用标准的.Where.Min运算符:

TheDictionary.Values
    .SelectMany(x => x)
    .Where(x => x.iMayBeNull == null)
    .Min(x => x.findMe);

答案 1 :(得分:1)

SelectMany方法并行的LINQ表达式是多个from子句。

示例:

var seq = from col in dict.Values
            from item in col
            where item.iMayBeNull == null
            select item.findMe;

var min = seq.Min();