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