У меня есть два IEnumerableLambda способ заполнить поле значения в методе ToDictionary()?
IEnumerable<MyObject> allowedObjects = MyService.GetAllowedObjects();
IEnumerable<MyOBject> preferedObjects = MyService.GetPreferedObjects();
Мы можем с уверенностью предположить, что preferedObjects всегда будет подмножеством allowedObjects.
Я хочу создать IDictionary<MyObject, bool>
. Объекты, где ключ - это набор MyObjects из разрешенных объектов, а bool - true, если экземпляр MyObject также был указан в списке предпочтительных объектов.
Я могу сделать это путем перечисления их и добавляя их по одному, но я хотел бы быть в состоянии сделать что-то вроде этого:
IDictionary<MyObject, bool> selectedObjects = allowedObjects
.ToDictionary(o => new KeyValuePair<MyObject, bool>()
{ Key = q,
Value = preferedObjects.Any(q)
}
);
UPDATE
Exchanged Содержит с Любой; Решение, которое предлагается больше всего то, что я пытался первым, но это не принято по некоторым причинам:
IDictionary<MyObject, bool> selectedObjects = allowedObjects
.ToDictionary<MyObject, bool>(o => o, preferedObjects.Any(o));
Visual Studio говорит первый метод не возвращает логическое значение. Это правда, но главным образом потому, что bool не будет правильным результатом, чтобы начать с ...
И тогда он говорит, что не может вывести тип второй лямбда ...
Как вы можете видеть, я попытался явно определить типы, которые помогут сделать вывод, но это не решает ничего.
Предложения?
Отказ от ответственности: имена и код snippyfied держать в центре внимания, где она должна быть
Вы не определяете второй параметр как выражение лямбда! Добавьте бит 'o =>' before 'preferedObjects.Any (o)', и он должен работать нормально (без необходимости указывать общие типы или использовать 'Any', а не' Contains'). – Noldorin