Liv*_*er9 6 c# lambda linq-to-sql
我一直在用这个撕掉我的头发.我有一系列搜索术语,我正在尝试使用LINQ to SQL查询来搜索数组中每个项目的字段值.
我到目前为止..
var searchResults =
from x in SDC.Staff_Persons
where staffTermArray.Any(pinq => x.Forename.Contains(pinq))
|| staffTermArray.Any(pinq => x.Surname.Contains(pinq))
|| staffTermArray.Any(pinq => x.Known_as.Contains(pinq))
orderby x.Surname
select x;
Run Code Online (Sandbox Code Playgroud)
......但是后来了
除Contains()运算符外,本地序列不能用于查询运算符的LINQ to SQL实现
......现在我被卡住了.
如果有人可以提供帮助,我将非常感激.提前致谢.
抢
我不确定这是否是最简单的解决方案,但这将有效:
var filter = CreateFilter(staffTermArray);
var searchResults =
from person in SDC.Staff_Persons.Where(filter)
orderby person.Surname
select person;
private static Expression<Func<Staff_Person, bool>> CreateFilter(
string[] staffTermArray)
{
var predicate = PredicateBuilder.False<Staff_Person>();
foreach (var staffTerm in staffTermArray)
{
// We need to make a local copy because of C# weirdness.
var ping = staffTerm;
predicate = predicate.Or(p => p.Forename.Contains(ping));
predicate = predicate.Or(p => p.Surname.Contains(ping));
predicate = predicate.Or(p => p.Known_as.Contains(ping));
}
return predicate;
}
Run Code Online (Sandbox Code Playgroud)
您需要使用PredicateBuilder来实现此功能.
| 归档时间: |
|
| 查看次数: |
2673 次 |
| 最近记录: |