Список в предложении where в ASP.net

#asp.net #asp.net-mvc

Вопрос:

Здравствуйте, я новичок в ASP.NET

У меня есть переменная checklistsss , которая была списком моего контрольного списка. вот код:

var checkListss = (from u in _userManager.ClearanceCheckListRepository.GetQueryable().Where(x => x.ClearanceId == userId.ClearanceId) select new { clearanceCheckListId = u.ClearanceCheckListId }).ToList();

Теперь я хочу, чтобы переменная checkListss была помещена в предложение where в этом коде:

var due = from checkListsddd in _userManager.DueRepository.GetQueryable().Where(x => x.ClearanceCheckListId == checkListss) select new { Item = checkListsddd.Label, Action = checkListsddd.Action };

для вывода due переменной в этом коде var checkList = from checkLists in _userManager.ClearanceCheckListRepository.GetQueryable().Where(x => x.ClearanceId == userId.ClearanceId) select new { ClearanceSignatoryId = checkLists.ClearanceSignatoryId, ClearanceCheckListId = checkLists.ClearanceCheckListId, Item = checkLists.Item, Action = checkLists.Action, Due = due };

обратите внимание, что программа checkListss выведет несколько контрольных списков

Я не знаю, как это сделать в asp.net

спасибо вам за ваши ответы

Ответ №1:

Без каких-либо дополнительных подробностей я могу только догадываться о типах, но я думаю, что вам не хватает перечисляемого.Содержит, чтобы проверить, есть ли идентификатор checkListss . Что-то вроде:

 var checkListss = (from u in _userManager.ClearanceCheckListRepository.GetQueryable().Where(x => x.ClearanceId == userId.ClearanceId) select u.ClearanceCheckListId).ToList();

var due  = from checkListsddd in _userManager.DueRepository.GetQueryable().Where(x => checkListss.Contains(x.ClearanceCheckListId)) select new { Item = checkListsddd.Label, Action = checkListsddd.Action };
 

Обратите внимание, что я изменил checkListss , чтобы быть списком типа идентификатора, а не списком анонимного типа.

В качестве примечания следует отметить, что смешивание синтаксиса LINQ fluent и запросов немного сбивает с толку (субъективно), поэтому я бы больше придерживался синтаксиса fluent:

 var checkListss = _userManager.ClearanceCheckListRepository.GetQueryable()
    .Where(x => x.ClearanceId == userId.ClearanceId)
    .Select(x => ClearanceCheckListId)
    .ToList();

var due = _userManager.DueRepository.GetQueryable()
    .Where(x => checkListss.Contains(x.ClearanceCheckListId))
    .Select(x => new { Item = x.Label, Action = x.Action })
    .ToList();