C#LINQ lambda -для получения данных, сравнивающих поля из двух списков
У меня есть 2 списка
- Домашнему ==&ГТ; ИД.№, наименование, стоимость
ListTwo == & gt; ID, Desc, Value
Ожидаемые значения-домашнему
[1, А, 200]
[1, А, 300]
[1, а, 520]
[2, B, 300]
[2, B, 350]
[2, B, 400]
[3, С, 40]
[3, с, 20]
Значения ListTwo-основные данные
[1, аналог, 500]
[2, Пособие,310]
[3, цепочка, 50]
мое требование
Я хочу получить список (скажем, ResultantList), который будет содержать только то значение, которое не превышает значения его соответствующего идентификатора в ListTwo.
Таким образом, ожидается, что ResultantList будет иметь только нижеприведенные данные из ListOne
[1, A, 520] == = & gt; значение здесь 520, 520 превышает значение (500) ID 1 в ListTwo
[2, B, 350] == = & gt; значение здесь равно 350, 350 превышает значение (310) ID 2 в ListTwo
[2, B, 400] == = & gt; значение здесь равно 400, 400 превышает значение (310) ID 2 в ListTwo
===&ГТ;[...]нет никакого значения от 3 идентификатор (имя как C) по-домашнему ;как оба значения(40,20), имеющий id 3 (С) по-домашнему меньше значения 50 с id 3 (описание, услуги) в ListTwo
Что я уже пробовал:
ResultantList = ListOne.Where(s => ListTwo.Any(l => (l.ID == s.ID && s.Value> l.Value))) .ToList();
Но это извлекает все значения, даже если значение меньше соответствующего значения (W.r.t ID) в ListTwo.
jeAntoni
Это прекрасно работает. Каким-то образом я пропустил задание между ними и, таким образом, видел правильный результат.
ResultantList = - Домашнему.Где(S =&ГТ; ListTwo.Любой(л =&ГТ; (л. ИД == ы.ИД &амп;&амп; ы.Значение&ГТ; я.Значение))) .Список();