raju@shekhar Ответов: 1

Построение динамического запроса с использованием дерева выражений


Привет, я работаю над динамическим построением запросов в linq с использованием дерева выражений.

Я взял ссылку на следующий пост
Построить предложение Where динамически в Linq[^]

Как я могу построить выражение, Если я хочу проверить, все ли элементы в списке содержатся в другой коллекции или нет. У меня есть личный класс


public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

и у меня есть список

List<Person> personList = new List<Person>()
        {
            new Person{ Name = "Shekhar", Age = 31},
            new Person{ Name = "Sandip", Age = 32},
            new Person{ Name = "Pramod", Age = 32},
            new Person{ Name = "Kunal", Age = 33}
        };

У меня есть еще один список

List<string> nameList = new List<string>() { "Sandip", "Prashant" };

Как я могу построить дерево выражений, чтобы проверить все элементы в списке "nameList", содержащиеся в "personList", и дать результат true или false

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

Попробовал использовать Contains. но это не сработало. Любое выражение Linq будет работать?

Maciej Los

Следуйте этой статье, чтобы узнать, как этого достичь!

1 Ответов

Рейтинг:
0

Maciej Los

Что ж...
Один Содержит метод[^] определяет, содержит ли последовательность указанный элемент. Если я правильно вас понял, вы хотите проверить, если какой-нибудь элемент последовательности удовлетворяет условию. Итак, вы должны использовать: Любой Метод (System.Linq)[^]

"Обычный" запрос linq может выглядеть следующим образом:

var names = nameList.Select(n => new
		{
			Name = n,
			IsOnPersonList = personList.Any(p=>p.Name==n)
		});
	foreach(var n in names)
	{
		Console.WriteLine("'{0}' => {1}", n.Name, n.IsOnPersonList);
	}


Результат:
'Sandip' => True
'Prashant' => False


Вы должны найти способ достичь того же самого, используя дерево выражений.

Удачи вам!