Я пытаюсь объединить две таблицы:
var data = from request in context.Requests
join account in context.AutolineAccts
on request.PkRequest.ToString() equals account.AccountCode
select new
{
ID = request.PkRequest.ToString(),
Location = request.FkLocation,
RequestDate = request.RequestDate.Value,
Requestor = request.FkRequestor,
DebitorNr = request.FkDebitor.ToString(),
NewDebit = request.Debit.ToString(),
ApprovalStatus = request.ApprovalStatus.ToString(),
RecommendationStatus = request.RecommendationStatus.ToString(),
DebitorName = account.CustomerSname,
Limit = account.CreditLimit
};
Теперь я хочу отфильтровать набор результатов в зависимости от статуса пользователя:
// Accounting user
if (ActiveDirectoryHelper.CheckIfUserIsInADGroup(userLogin, AdGroups.ACCOUNTING) )
req = data.Where(x => x.RecommendationStatus == null).ToList();
// After sales manager
else if (ActiveDirectoryHelper.CheckIfUserIsInADGroup(userLogin, AdGroups.SAV_LEADERS))
req = data.OrderByDescending(x => x.ID).ToList();
// Everybody else
else
req = data.OrderByDescending(x => x.PkRequest).ToList();
И вот где я застрял. Когда у меня нет соединения и я получаю только тип «Запрос», я могу просто объявить список запросов
List<Requests> req;
Но с этой комбинацией запросов и AutolineAccts мне пришлось бы объявить и инициализировать список «элементов» (req) для присвоения набора результатов в сегментах if-else. Но я не знаю, как должна выглядеть эта анонимная переменная.
Позже мне нужно сопоставить набор результатов со списком моих моделей IndexView:
foreach (var item in req)
viewModel.CLModels.Add(new IndexViewModel
{
ID = item .PkRequest.ToString(),
Location = item .FkLocation,
RequestDate = item .RequestDate.Value,
Requestor = item .FkRequestor,
DebitorNr = item .FkDebitor.ToString(),
NewDebit = item .Debit.ToString(),
ApprovalStatus = item .ApprovalStatus.ToString(),
RecommendationStatus = item .RecommendationStatus.ToString(),
DebitorName = item.CustomerSname,
Limit = item.CreditLimit
});
Есть идея решить эту проблему?