Предложение Where IN в LINQ

#linq

#linq

Вопрос:

В моем классе есть список другого класса.

  public class CustomerRequest : BaseEntity
 {
  [Key]
  public int Id { get; set; }
  public int Code { get; set; }
  public virtual List<TechnicalOfficer> TechnicalOfficers { get; set; }
 }

 public class TechnicalOfficers  : BaseEntity
 {
  [Key]
  public int Id { get; set; }
  public int Code { get; set; }
 }
  

Я хочу выбрать все CustomerRequest , что TechnicalOfficers содержит специальный идентификатор.

Ответ №1:

Я хочу выбрать все CustomerRequest , что TechnicalOfficers содержит специальный идентификатор.

Используйте Any (или, возможно All ) with Contains .

 var specialIds = new[] { 1, 2, 3 };

var customerRequests = CustomerRequests
    .Where(cr => cr.TechnicalOfficers.Any(to => specialIds.Contains(to.Id)));
  

Комментарии:

1. Спасибо, specialIds — это список технических сотрудников?

2. Нет, это набор ваших специальных идентификаторов.

3. Большое спасибо, я использую _db.CustomerRequests.Where(w => w.TechnicalOfficers.Any(e=>e.Id==user.UserId))