.NET 4.x Деревья выражений - C#
Формулировка задачи:
Здравствуйте,
помогите пожалуйста разобраться с деревьями выражений.
Хочу вызвать метод в который передаю List организаций, и три лямбда выражения.
Это тело метода:
В интернете пыталась найти примеры, чтобы найти то, чтобы работало так как я бы задумала, но все равно компилятор, как не компилировался, так и не компилируется...
Листинг программы
- PrintDifference(Companies, c1 => c1.CompanyID == 42, c2 => c2.CompanyID == 44, c=>c.FullName);
Листинг программы
- private string PrintDifference<T, TExtraProp1, TExtraProp2, TExtraProp3, TT >(IEnumerable<T> sourceInstance,
- Expression<Func<T, TExtraProp1>> excludeExpression1,
- Expression<Func<T, TExtraProp2>> excludeExpression2,
- Expression<Func<TT, TExtraProp3>> excludeExpression3)
- {
- //сначало пытаюсь достать одну организацию
- var company1 = sourceInstance.First(excludeExpression1);
- //затем пытаюсь достать другую организацию
- var company2 = sourceInstance.First(excludeExpression2);
- //потом пытаюсь достать значение свойства "FullName" одной организации
- var compareValue1 = company1.Select(excludeExpression3);
- //потом пытаюсь достать значение свойства "FullName" другой организации
- var compareValue2 = company2.Select(excludeExpression3);
- if (compareValue1 == compareValue2) return "yes";
- return "";
- }
Решение задачи: «.NET 4.x Деревья выражений»
textual
Листинг программы
- private string PrintDifference<T, TExtraProp3>(IEnumerable<T> sourceInstance,
- Expression<Func<T, bool>> excludeExpression1,
- Expression<Func<T, bool>> excludeExpression2,
- Expression<Func<T, TExtraProp3>> excludeExpression3)
- {
- //сначало пытаюсь достать одну организацию
- var company1 = sourceInstance.AsQueryable().First(excludeExpression1);
- //затем пытаюсь достать другую организацию
- var company2 = sourceInstance.AsQueryable().First(excludeExpression2);
- //потом пытаюсь достать значение свойства "FullName" одной организации
- var compareValue1 = excludeExpression3.Compile()(company1);
- //потом пытаюсь достать значение свойства "FullName" другой организации
- var compareValue2 = excludeExpression3.Compile()(company2);
- if (compareValue1.ToString() == compareValue2.ToString()) return "yes";
- return "";
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д