I want to dynamically build a LINQ query so I can do something like

```
var list = n.Elements().Where(getQuery("a", "b"));

```

instead of

```
var list = n.Elements().Where(e => e.Name = new "a" || e.Name == "c");

```

(Most of the time, I need to pass XNames with namespaces, not just localnames...)

My problem is in accessing the array elements:

```
private static Func<XElement, bool> getQuery(XName[] names)
{
    var param = Expression.Parameter(typeof(XElement), "e");

    Expression exp = Expression.Constant(false);
    for (int i = 0; i < names.Length; i++)
    {
         Expression eq = Expression.Equal(
         Expression.Property(param, typeof(XElement).GetProperty("Name")!.Name),
         /*--->*/ Expression.Variable(names[i].GetType(), "names[i]")
         );
    }
    var lambda = Expression.Lambda<Func<XElement, bool>>(exp, param);

    return lambda.Compile();
}

```

Obviously the Variable expression is wrong, but I'm having difficulty building an expression capable of accessing the array values.