使用表达式树构建动态查询

时间:2018-10-03 07:15:48

标签: c# linq lambda

我正在使用表达式树在LINQ中构建动态查询。

我已参考以下帖子 https://www.codeproject.com/Tips/582450/Build-Where-Clause-Dynamically-in-Linq

如果要检查列表中所有元素是否包含在另一个集合中,如何构建表达式?

我有一个Person类

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" };

如何构建表达式树以检查“ personList”中包含的“ nameList”列表中的所有元素,并给出结果为真还是假?

2 个答案:

答案 0 :(得分:0)

尝试:

public bool Find(List<string> nameList, List<Person> personList)
    {
        foreach (var name in nameList)
            if (personList.FirstOrDefault(person => person.Name == name) != null)
            {
                // Find
                return true;
            }
        return false;
    }

答案 1 :(得分:0)

尝试一下:

bool contained = !personList.Select(l=>l.Name).Except(nameList).Any();