Хорошо, как дословное преобразование:
var query = from tmp in context.vw_EmployeeDemographics
where !(from jitrv in context.JITRuleValidations
join e in context.Employees
on jitrv.Employee_RecordID equals e.RecordID
where jitrv.Parent_RecordID == Parent_RecordID
select e.RecordID).Contains(tmp.Parent_RecordID)
&& context.fn_ConcatName(tmp.FirstName, tmp.MiddleName, tmp.LastName)
.Contains(_master.pSearchValue1)
orderby tmp.LastName.ToUpper(), tmp.FirstName.ToUpper()
select new { tmp.FirstName, tmp.MiddleName, tmp.LastName,
RecordID = tmp.EmployeeID,
DisplayText = context.fn_ConcatName(tmp.FirstName,
tmp.MiddleName, tmp.LastName) };
Бит, в котором я не уверен, это часть Select
в VB - я предполагаю , что она автоматически создает новый анонимный тип (как и запрос C #), но я не уверен.
Я думаю, что это должно быть сделано - но я настоятельно рекомендую вам преобразовать его в нечто более читабельное :) Вот несколько изменений:
var validations = from jitrv in context.JITRuleValidations
join e in context.Employees
on jitrv.Employee_RecordID equals e.RecordID
where jitrv.Parent_RecordID == Parent_RecordID
select e.RecordID;
var query = from tmp in context.vw_EmployeeDemographics
let DisplayText = fn_ConcatName(tmp.FirstName,
tmp.MiddleName,
tmp.LastName)
where !validations.Contains(tmp.Parent_RecordID)
&& DisplayText.Contains(_master.pSearchValue1)
orderby tmp.LastName.ToUpper(), tmp.FirstName.ToUpper()
select new { tmp.FirstName, tmp.MiddleName, tmp.LastName,
RecordID = tmp.EmployeeID, DisplayText };