0
Это будет быстро и грязно, но должно дать вам эту идею. Я делал это раньше, но не могу найти, где я это сделал, и не могу вспомнить, так как это было так долго. Мне нужно искать на нескольких уровнях списков ....Поиск по нескольким спискам на нескольких уровнях с помощью linq
Пример: Seach для «свинья»
var query = context.Farms.OrderBy(x => x.FarmName).Select(f => new FarmItem
{
FarmId = f.FarmId,
FarmName = f.FarmName,
Fields = f.Fields.OrderBy(x => x.FieldName).Select(d => new FieldItem
{
FieldId = d.FieldId,
FieldName = d.FieldName,
Animals = d.Animals.OrderBy(x => x.AnimalName).Select(a => new AnimalItem
{
AnimalId = a.AnimalId,
AnimalName = a.AnimalName
})
})
});
мне нужно, чтобы увидеть, если «свинья» в FarmName, FieldName или AnimalName и
- возвращение ферма, если «свинья» находится в имени, и все его поле, и это животные месторождения
- возвращения поле с «свиньей» в названии, это так же, как это ферма, и все это месторождение животные
- возвращения планы с «свиньей» в названии, это так же, как это поле, и это ферма Филд
Это не был бы вырезать все животное, если no FieldName.Contains («pig») и поля, если ферма не содержала «свиньи» .. так далее. – user2962189
Действительно, мне нужно будет посмотреть, есть ли в фермах, а затем посмотреть, есть ли в полях, а затем посмотреть, есть ли у животных. Если не спрятать ферму. – user2962189
Нет. Вот почему предложение Where после выбора. Вам может понадобиться вызов .ToEnumerable() между ними. Поле включается, если оно содержит «свиньи», или если в последовательности, присвоенной свойству «Животные», есть какие-либо элементы. Это было бы только в том случае, если один или несколько животных в этом поле имеют «свиньи» от своего имени. Та же логика работает для ферм. –