我正在尝试创建一种搜索方法,该方法要检查给定记录的关键字是否包含在任意数量的不同列中。

我的Linq声明如下:

string[] searchFilter = {"john", "iceberg"};


var q = from qua in qual
                    join del in deliverables on qua.ID equals del.Q_ID
                    where searchFilter.All(s => (qua.Name + " " + qua.Project + " " + qua.Summary + " " + del.Name + " " + del.Summary).ToLower().Contains(s))
                    select qua;


但是,我收到一条错误消息,指出:“在LINQ to SQL实现中,除Contains()运算符外,不能在查询中使用本地序列。”

最佳答案

实际上,您不能使用All方法,而只能使用Contains方法:

var q = from qua in qual
        join del in deliverables on qua.ID equals del.Q_ID
        where searchFilter.Contains(qua.Name) ||  searchFilter.Contains(qua.Project)...
        select qua;


当然,您可以将linq查询与表达式动态组合(但是可能需要做更多工作),或者使用动态linq。

关于c# - 联接LINQ中的列并运行包含运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11722588/

10-10 18:57