Возможно добавить условие для связанных полей таблицы в LINQ - PullRequest
0 голосов
/ 18 мая 2018

Может кто-нибудь предложить мне решение для добавления условия для элементов справочной таблицы в linq.

У меня есть главная таблица с именем TourPackage, которая включает в себя

public class TourPackage{
   public int TourID { get; set; }
   public string TourName { get; set; }
   public List<IncludedItems> IncludedItems { get; set; }
}

Каждый пакет тура содержит некоторые выбранныессылки на элементы, такие как

public class IncludedItems {
   public int TourID { get; set; }
   public int IncludedID { get; set; }
   public Included Included { get; set; }
}

Все включенные элементы должны иметь ссылку на включенную таблицу для ссылки на поиск

public class Included {
   public int IncludedID { get; set; }
   public string IncludedValue { get; set; }
}

теперь у меня есть набор IncludedID, например [1,2,3], Isможно отфильтровать TourPackage по IncludedID.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Вы можете использовать следующий код

У меня есть образец массива (то есть example), который содержит идентификаторы, мы проверяем, присутствует ли текущий идентификатор (то есть ele.Included.IncludedID) в массиве идентификаторов.

listex.Where(x => x.IncludedItems.Any(ele => example.Contains(ele.Included.IncludedID))).ToList();

образец: -

int[] example = new int[3];
example[0] = 123;
example[1] = 456;
example[2] = 789;

List<TourPackage> listex = new List<TourPackage>();
List<TourPackage> filterList = listex.Where(x => x.IncludedItems.Any(ele => example.Contains(ele.Included.IncludedID))).ToList();
0 голосов
/ 18 мая 2018

Вы пытались использовать что-то вроде:

var myIds = new List<int> {123,456};
var result = context.TourPackages
    .Where(x => x.IncludedItems.Any(a => a.Included !=null && myIds.Contains(a.Included.IncludedId)))
    .ToList();

Возможно, вам придется включить некоторые отношения вручную, в зависимости от того, настроена ли ленивая загрузка или нет.

Подробнее на https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx

...