Я делаю вызов базы данных в C #, который выглядит примерно так:
public JArray GetEmployeeInfo(string search_text)
{
var search = search_text.Split(' ');
var dataObject = _db.Employee
.Where(x => x.Usage.Equals("basic") &&
search.All(s => x.EmployeeName.Contains(s) ||
x.EmployeeEmailAddress.Contains(s) ||
x.EmployeeId.Contains(s)))
.Select(x => new
{
x.EmployeeId,
x.EmployeeName,
x.EmployeeEmailAddress,
x.EmployeeDepartmentName,
x.UsageTags
});
return JArray.FromObject(dataObject);
}
Что отлично работает. Проблема заключается в формате возвращаемых данных. Это выглядит примерно так:
{
"EmployeeId": "000012345",
"EmployeeName": "Firstname Lastname",
"EmployeeEmailAddress": "flastname1@website.com",
"EmployeeDepartmentName": "Accounting",
"EmployeeType": "Staff",
"UsageTags": "[{\"seqNo\":1,\"Tag\":\"CurrentEmpl:Accountant\"},{\"seqNo\":2,\"Tag\":\"CurrentEmpl:Manager\"},{\"seqNo\":3,\"Tag\":\"Intern:Attended\"}]"
}
, и мне нужно, чтобы UsageTags
был массивом значений Tag
, например:
{
"EmployeeId": "000012345",
"EmployeeName": "Firstname Lastname",
"EmployeeEmailAddress": "flastname1@website.com",
"EmployeeDepartmentName": "Accounting",
"EmployeeType": "Staff",
"UsageTags": ["CurrentEmpl:Accountant", "CurrentEmpl:Manager", "Intern:Attended"]
}
Прямо сейчас,Я форматирую это в JavaScript, но было бы намного лучше, если бы я мог просто написать оператор LINQ, который делает это на стороне сервера. Я потратил большую часть сегодняшнего дня, пытаясь найти здесь разные решения, а также Google и мою старую кулинарную книгу C #, но, похоже, ничего не поделаешь.
У кого-нибудь есть решение, которое каким-то образом разбирает UsageTags
в массивJObjects
, затем вытащить значения всех клавиш Tag
и выбросить значения в массив? Потому что я схожу с ума, стуча головой по этому.