.NET 4.x Деревья выражений - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите пожалуйста разобраться с деревьями выражений. Хочу вызвать метод в который передаю List организаций, и три лямбда выражения.
Листинг программы
  1. PrintDifference(Companies, c1 => c1.CompanyID == 42, c2 => c2.CompanyID == 44, c=>c.FullName);
Это тело метода:
Листинг программы
  1. private string PrintDifference<T, TExtraProp1, TExtraProp2, TExtraProp3, TT >(IEnumerable<T> sourceInstance,
  2. Expression<Func<T, TExtraProp1>> excludeExpression1,
  3. Expression<Func<T, TExtraProp2>> excludeExpression2,
  4. Expression<Func<TT, TExtraProp3>> excludeExpression3)
  5. {
  6. //сначало пытаюсь достать одну организацию
  7. var company1 = sourceInstance.First(excludeExpression1);
  8. //затем пытаюсь достать другую организацию
  9. var company2 = sourceInstance.First(excludeExpression2);
  10. //потом пытаюсь достать значение свойства "FullName" одной организации
  11. var compareValue1 = company1.Select(excludeExpression3);
  12. //потом пытаюсь достать значение свойства "FullName" другой организации
  13. var compareValue2 = company2.Select(excludeExpression3);
  14. if (compareValue1 == compareValue2) return "yes";
  15.  
  16. return "";
  17. }
В интернете пыталась найти примеры, чтобы найти то, чтобы работало так как я бы задумала, но все равно компилятор, как не компилировался, так и не компилируется...

Решение задачи: «.NET 4.x Деревья выражений»

textual
Листинг программы
  1.         private string PrintDifference<T, TExtraProp3>(IEnumerable<T> sourceInstance,
  2.             Expression<Func<T, bool>> excludeExpression1,
  3.             Expression<Func<T, bool>> excludeExpression2,
  4.             Expression<Func<T, TExtraProp3>> excludeExpression3)  
  5.         {
  6.  
  7.             //сначало пытаюсь достать одну организацию
  8.             var company1 = sourceInstance.AsQueryable().First(excludeExpression1);
  9.             //затем пытаюсь достать другую организацию
  10.             var company2 = sourceInstance.AsQueryable().First(excludeExpression2);
  11.  
  12.             //потом пытаюсь достать значение свойства "FullName" одной организации
  13.             var compareValue1 = excludeExpression3.Compile()(company1);
  14.             //потом пытаюсь достать значение свойства "FullName" другой организации
  15.             var compareValue2 = excludeExpression3.Compile()(company2);
  16.  
  17.  
  18.             if (compareValue1.ToString() == compareValue2.ToString()) return "yes";
  19.  
  20.             return "";
  21.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы