imeyal0 Ответов: 1

Как я могу выбрать каждый из 2-х похожих списков< & gt;


I have two different List<> from the Foood class given below.
How can I select from each list such that :
x1.calories + x2.calories < CertainValue
can be satisfied?


Что я уже пробовал:

public class Foood
    {
        public string Name { get; set; }
        public double calories { get; set; }

        public Foood(string name, double calory)
        {

            this.Name = name;
            this.calories = calory;

}
}

CHill60

Что вы на самом деле пробовали?

imeyal0

Я попытался использовать форму :
ListX1.Где (X1 = & gt; ListX2. Any(X1 => X1.b == X2.b)), но он может отображать результат только из одного списка, а не из второго.

Maciej Los

Можете ли вы опубликовать примеры данных и ожидаемый результат?

1 Ответов

Рейтинг:
6

P_Z

Привет,
Ваш запрос:

ListX1.Where(X1 => ListX2.Any(X1 => X1.b == X2.b))

проверяет, существуют ли значения из ListX2 в ListX1, но нет объединения списков.

Как про конкатенацию списков Перечислимый.Функция Concat(TSource) Для (Интерфейс IEnumerable(Метода), Интерфейс IEnumerable(Метод)) (Системы.В LINQ)[^]
var list = ListX1.Concat(ListX2);

Кроме того, вы можете сделать это другим способом, например, с помощью AddRange Список (T).Метод AddRange (IEnumerable (T)) (System.Коллекции.Общий)[^]
var list = new List<Foood>();
list.AddRange(ListX1);
list.AddRange(ListX2);



Затем
list = list.Where(x => x.calories < certainValue).ToList();


Редактирование 1
Вышесказанное может быть не тем, что вам нужно, поэтому, упомянув о присоединении списков

var joinedLists = (from x1 in ListX1
                   join x2 in ListX2
                   on x1.b equals x2.b //this is joining of both lists
                   where x1.calories + x2.calories < certainValue //where condition
                   select new 
                   {
                      x1.Name,
                      x1.calories,
                      x2.Name
                      x2.calories
                   }).ToList(); //project into new list of anonymous type and select the required fields