Используя LINQ, найдите минимальное значение свойства item, в коллекции, в словаре

public class Item
{
 public ****** findMe{ get; set; } 
 public int? iMayBeNull { get; set; }
}
public Dictionary<int, icollection<item="">> TheDictionary{ get; set; }
...
TheDictionary dict = new Dictionary<int, icollection<item="">>();
</int,></int,>

Я пытаюсь найти минимальное значение "findMe", где "iMayBeNull" имеет значение null во всех сборниках "dict".

Кажется, я не обволакиваю голову.

Всем приветствуется любое руководство.

2 ответа

Используйте .SelectMany, чтобы объединить все коллекции в одну большую последовательность, а затем просто используйте стандартные операторы .Where и .Min:

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


Выражение LINQ, параллельное методу SelectMany, - это предложение multiple from.

Пример:

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

licensed under cc by-sa 3.0 with attribution.