2016-06-08 5 views
-3

У меня есть C# словарь:C# LINQ запрос словарем

Dictionary<int, ItemsClass> Items 

ItemsClass имеет элемент, называемый «Number»

Я хочу написать запрос LINQ, который возвращает мне словарь номер ключа для ItemsClass который имеет «Номер», соответствующий определенному значению, например Икс.

Как это сделать?

ответ

2

Чтобы получить все соответствующие элементы, которые вы могли бы использовать:

Items.Where(p => p.Value.Number == x).Select(p => p.Key); 

Чтобы получить единственный ключ его вы всегда ожидаете его, чтобы найти один и только один:

Items.Where(p => p.Value.Number == x).Select(p => p.Key).Single(); 

Чтобы получить первое согласование если есть несколько предметов:

Items.Where(p => p.Value.Number == x).Select(p => p.Key).First(); 
+1

Незначительная коррекция: из моего чтения это будет 'p.Value.Number == x'. Также может быть полезно использовать «Single» или «SingleOrDefault», поскольку подразумевается, что существует только один результат, а не несколько возможных. – Chris

+1

@ Крис - хорошая точка, спасибо. – Sean