ERROR El método estático requiere una instancia nula, el método no estático requiere una instancia no nula

Estoy tratando de crear un árbol de expresión. Necesito leer datos de una tabla de datos y verificar sus columnas. Las columnas que se deben verificar y también el número de columnas que se deben verificar se conocen solo en tiempo de ejecución. Los nombres de las columnas se me dan como una matriz de cadenas y cada columna tiene una Lista de cadenas para verificar. Probé árboles de expresión de muestra, como el de abajo.

Aquí me encuentro con un error.

El método estático requiere una instancia nula, el método no estático requiere una instancia no nula. Nombre del parámetro: instancia

en la línea

inner = Expression.Call (rowexp, mi, colexp);

¡Amablemente ayúdenme!

IQueryable<DataRow> queryableData = CapacityTable
    .AsEnumerable()
    .AsQueryable()
    .Where(row2 => values.Contains(row2.Field<string>("Head1").ToString()) 
                && values.Contains(row2.Field<string>("Head2").ToString()));

MethodInfo mi = typeof(DataRowExtensions).GetMethod(
     "Field", 
      new Type[] { typeof(DataRow),typeof(string) });

mi = mi.MakeGenericMethod(typeof(string));

ParameterExpression rowexp = Expression.Parameter(typeof(DataRow), "row");
ParameterExpression valuesexp = Expression.Parameter(typeof(List<string>), "values");
ParameterExpression fexp = Expression.Parameter(typeof(List<string>), "types");
Expression inner, outer, predicateBody = null;

foreach (var col in types)
{
    // DataRow row = CapacityTable.Rows[1];

    ParameterExpression colexp = Expression.Parameter(typeof(string), "col");
    //  Expression left = Expression.Call(pe, typeof(string).GetMethod("ToLower", System.Type.EmptyTypes));

    inner = Expression.Call(rowexp,mi, colexp);
    outer = Expression.Call(valuesexp, typeof(List<string>).GetMethod("Contains"), inner);
    predicateBody = Expression.And(predicateBody,outer);
}

MethodCallExpression whereCallExpression = Expression.Call(
    typeof(Queryable),
    "Where",
    new Type[] { queryableData.ElementType },
    queryableData.Expression,
    Expression.Lambda<Func<DataRow,bool>>(predicateBody, new ParameterExpression[] { rowexp }));

Respuestas a la pregunta(1)

Su respuesta a la pregunta