score:1

Accepted answer

i fooooooooooound. i'm very happy.

only , i replaced the following method :

private static ienumerable<expression> getconditionswithsubmodel(string search, parameterexpression pe,
    string parameter)
{
    //         output.where(d => d.jn_newscategories.newscategoriesen.contains(""));
    var expressions = new list<expression>();
    var strings = parameter.split('$');
    var modelname = strings[0];
    var submodelname = strings[1].split('.')[0];
    var submodelfield = strings[1].split('.')[1];

    foreach (var splitseacrh in search.split(' '))
    {
        type modelclass = getmodel(modelname);
        type submodelclass = getmodel(submodelname);
        parameterexpression pesubmodel = expression.parameter(modelclass, "d");
        expression leftsubmodel = expression.property(pesubmodel, modelclass.getproperty(submodelname));
        expression ex = expression.property(leftsubmodel, submodelclass.getproperty(submodelfield));
        expression rightsubmodel = expression.constant(splitseacrh);
        methodcallexpression conditionexpressionsubmodel = expression.call(ex,
            typeof(string).getmethod("contains"), rightsubmodel);

        expressions.add(conditionexpressionsubmodel);
    }

    return expressions;
}

with following method :

private static ienumerable<expression> getconditionswithsubmodel(string search, parameterexpression pe,
    string parameter)
{
    //         output.where(d => d.jn_newscategories.newscategoriesen.contains(""));
    var expressions = new list<expression>();
    var strings = parameter.split('$');
    var modelname = strings[0];
    var submodelname = strings[1].split('.')[0];
    var submodelfield = strings[1].split('.')[1];

    foreach (var splitseacrh in search.split(' '))
    {
        type modelclass = getmodel(modelname);
        type submodelclass = getmodel(submodelname);
        expression leftsubmodel = expression.property(pe, modelclass.getproperty(submodelname));
        expression ex = expression.property(leftsubmodel, submodelclass.getproperty(submodelfield));
        expression rightsubmodel = expression.constant(splitseacrh);
        methodcallexpression conditionexpressionsubmodel = expression.call(ex,
            typeof(string).getmethod("contains"), rightsubmodel);

        expressions.add(conditionexpressionsubmodel);
    }

    return expressions;
}

Related Query

More Query from same tag