Скажем, у меня есть объект List<KeyValuePair<string, string>>
со следующими записями, представляющими имена собак и маркеры различных пород, с которыми они рождаются:
Name BreedMarkers
Spot PUG
Spot PITBULL
Spot BASSETT
Rover DACHSHUND
Meat PUG
Meat ROTTWEILER
Я хочу захватить только те пары строк, которые имеют общие BreedMarkers
. Например, поскольку Spot
и Meat
имеют общие маркеры для PUG
, я хочу сократить словарь, чтобы удалить все, кроме этих пар. Конечный результат должен быть:
Name (Key) BreedMarkers (Value)
Spot PUG
Meat PUG
До сих пор я пытался вывести элементы для разделения List<string>
объектов, а затем пробовал join
между ними, но это код вонючий и я надеюсь, что есть более элегантный способ.
var commonMarkers = namesMarkers.ToLookup(nm => nm.Key, nm => nm.Value);
, гдеnamesMakers
- этоList<KeyValuePair<string, string>>
. Думаю, это поможет. 21.02.2014IEnumerable<KeyValuePair<string, string>>
, который работает и с вашимList<>
. Я думаю, вы хотите поменять местами вашиKey
/Value
в поиске (как у меня), чтобы вы искалиBreedMarkers
, а неName
. 21.02.2014.ToLookup(x => x.Value)
сохранил полные пары из оригинала при поиске. (Или для формы, использующейWhere
, чтобы опуститьSelect
). 21.02.2014