Запрос связанной сущности

Простой рекурсивный чек будет достаточно, и как можно раньше вернемся, мы предполагаем, что вход не является списком или содержит не-списки, он не пуст

def isEmpty(alist):
    try:
        for a in alist:
            if not isEmpty(a):
                return False
    except:
        # we will reach here if alist is not a iterator/list
        return False

    return True

alist = []
blist = [alist]               # [[]]
clist = [alist, alist, alist] # [[], [], []]
dlist = [blist]               # [[[]]]
elist = [1, isEmpty, dlist]

if isEmpty(alist): 
    print "alist is empty"

if isEmpty(dlist): 
    print "dlist is empty"

if not isEmpty(elist): 
    print "elist is not empty"

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

0
задан Andrew Bailie 18 January 2019 в 15:02
поделиться

1 ответ

Я бы удалил виртуальные коллекции и объекты из всех трех классов, а затем удалил поле Id (при условии, что это первичный ключ) в таблице OrganisationLocations. Поля OrganisationId и LocationId в OrganisationLocations должны быть как первичными ключами, так и внешними ключами, чтобы сделать связь «многие ко многим» между OrganisationLocations, Locations и Organization. Затем вы можете использовать Linq, чтобы выполнить простой запрос на соединение, чтобы получить информацию, которую вы ищете. Например:

            var orgs = (from ol in PfApiContext.OrganisationLocations
                        inner join o in PfApiContext.Organisation on o.Id equals ol.OrganisationId
                        inner join l in PfApiContext.Locations on ol.LocationId equals l.Id
                        where ol.LocationId = 1
                        select new Organisation()
                        {
                            Id = o.Id,
                            Name = o.Name,
                            Owner = o.Ower,
                            etc...

                        }
0
ответ дан user10728126 18 January 2019 в 15:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: