Как написать Enumerable запрос "like", используя linq.js
У меня есть массив JSON, как показано ниже.
[
{
"_Id": "0001",
"_PatentId": "0000",
"_Text": "Employee",
"_Value": "employee",
"_PermissionLevel": 55
},
{
"_Id": "0002",
"_PatentId": "0000",
"_Text": "Employees",
"_Value": "employees",
"_PermissionLevel": 55
},
{
"_Id": "0002",
"_PatentId": "0001",
"_Text": "Dept",
"_Value": "Dept",
"_PermissionLevel": 55
}
]
Используя этот массив JSON, мне нужно фильтровать сотрудников, используя оператор like. Я использовал запрос ниже, и он работает нормально.
var qryResult = Enumerable.From(_gramrTree).Where("$._Text == 'Employee'").OrderBy("$._Id").Select("$._Id").ToArray();
Но мне нужно сделать с оператором, как.. но это не работает..
Неудачные запросы
var qryResult = Enumerable.From(_gramrTree).Where("$._Text like '%Emp%'").OrderBy("$._Id").Select("$._Id").ToArray();
var qryResult = Enumerable.From(_gramrTree).Where("$._Text % 'Emp'").OrderBy("$._Id").Select("$._Id").ToArray();
2 ответа
Пожалуйста попробуйте этот обходной путь (кажется, что вроде не входит)
.Where("~($._Text).toUpperCase().indexOf('emp'.toUpperCase())")
Рабочий пример:
var _gramrTree = [{ "_Id": "0001", "_PatentId": "0000", "_Text": "Employee", "_Value": "employee", "_PermissionLevel": 55 }, { "_Id": "0002", "_PatentId": "0000", "_Text": "Employees", "_Value": "employees", "_PermissionLevel": 55 }, { "_Id": "0002", "_PatentId": "0001", "_Text": "Dept", "_Value": "Dept", "_PermissionLevel": 55 }],
qryResult = Enumerable.From(_gramrTree).Where("~($._Text).toUpperCase().indexOf('emp'.toUpperCase())").ToArray();
document.write('<pre>' + JSON.stringify(qryResult, 0, 4) + '</pre>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.js"></script>
Я тоже нашел метод тоже..
var qryResult = Enumerable.From(_gramrTree)
.Where("!!$._Text.match(/^"Emp"/i)")
.OrderBy("$._Text")
.Select("$._Text")
.ToArray()