Я немного новичок в LINQ и Entity Framework, поэтому довольно простые запросы SQL вызывают у меня головную боль. У меня есть экран ввода пользователя, который позволяет им выбирать входные значения, и полученный запрос зависит от того, какие значения ввел пользователь. Полученный запрос группирует результаты, чтобы представить список уникальных клиентов
Упрощенный дизайн стола - клиент может находиться во многих штатах
Клиент
CustomerId
Имя
JoinDate
Штат
StateId
CustomerId
Таким образом, пользователь должен ввести имя клиента на экране, чтобы запустить запрос, но состояние является необязательным полем, поэтому мой запрос должен быть немного динамичным в коде. База LINQ, которую я написал, довольно проста
dim cust = from c in ctx.Customer
where c.Name = InputFromScreen
Select c.CustomerId, c.Name, c.JoinDate, C.State
Теперь, когда у меня есть базовый запрос LINQ, я могу использовать лямбда-выражения для дальнейшего сокращения набора запросов, в зависимости от ввода на экране (добавьте AND к где).
Пример: если пользователь ввел значение в поле даты присоединения:
cust = cust.Where(Function(c) c.JoinDate = DateFromScreen)
Однако я не могу понять, как добавить Where / Group для состояния, поскольку State - это навигация, а не таблица, и мне нужно только одну строку для клиентов, даже если у клиента несколько состояний
SQL для этого был бы довольно простым (и это не оптимально, но добавление AND для каждого элемента на экране - самый простой способ для примера)
select c.customerid, c.name
from customer c
where c.name = 'input' and c.JoinDate = 'input' and
c.customerid in (select customerid from state where state = 'IN')
Я думаю, это довольно просто.