LINQ к SQL для самоссылки на таблицы?

Если вы хотите установить HTTP-заголовок User-Agent для вашего запроса, который будет использоваться для загрузки в веб-просмотр,

let userAgent = "Custom User Agent";
let myURL = NSURL(string: "http://http://web-example")
let myURLRequest:NSURLRequest = NSMutableURLRequest(URL: myURL!)
myWbView.loadRequest(myURLRequest)    
myURLRequest.setValue(userAgent, forHTTPHeaderField: "User-Agent")

Если вы хотите установить User-Agent для всех запросов в ваше приложение, см. этот вопрос Как я могу установить «User-Agent & quot; заголовок UIWebView в Swift

5
задан Shog9 17 April 2015 в 07:37
поделиться

4 ответа

Я не думаю, что linq-to-sql имеет хорошее решение этой проблемы. Так как Вы используете SQL-сервер 2005, можно использовать CTEs, чтобы сделать иерархические запросы. Или хранимая процедура или встроенный запрос (использующий DataContext. ExecuteQuery), добьется цели.

3
ответ дан 14 December 2019 в 09:05
поделиться

Хорошо вот ужасная срочно отправленная реализация с помощью LINQ. Не используйте это :-)

public IQueryable GetCategories(Category parent)
{
    var cats = (parent.Categories);
    foreach (Category c in cats )
    {
        cats  = cats .Concat(GetCategories(c));
    }
    return a;
}
2
ответ дан 14 December 2019 в 09:05
поделиться

Производительный подход должен создать вставить/изменить/удалить триггер, который поддерживает совершенно другую таблицу, которая содержит пар предка узла для всех предков всех узлов. Таким образом, поиск является O (N).

Для использования его для получения всех продуктов, принадлежащих узлу и всем его потомкам, можно просто выбрать все узлы категории, которые имеют целевой узел как предка. После этого Вы просто выбираете любые продукты, принадлежащие любой из этих категорий.

1
ответ дан 14 December 2019 в 09:05
поделиться

Путем я обрабатываю, это при помощи некоторых дополнительных методов (фильтры). Я описал некоторый пример кода из проекта, на котором я реализовал это. Посмотрите конкретно на строки, где я заполняю объект ParentPartner и Список SubPartners.

public IQueryable<Partner> GetPartners()
        {
            return from p in db.Partners
                   select new Partner
                   {
                       PartnerId = p.PartnerId,
                       CompanyName = p.CompanyName,
                       Address1 = p.Address1,
                       Address2 = p.Address2,
                       Website = p.Website,
                       City = p.City,
                       State = p.State,
                       County = p.County,
                       Country = p.Country,
                       Zip = p.Zip,
                       ParentPartner = GetPartners().WithPartnerId(p.ParentPartnerId).ToList().SingleOrDefault(),
                       SubPartners = GetPartners().WithParentPartnerId(p.PartnerId).ToList()
                   };
        }


public static IQueryable<Partner> WithPartnerId(this IQueryable<Partner> qry, int? partnerId)
        {
            return from t in qry
                   where t.PartnerId == partnerId
                   select t;
        }

public static IQueryable<Partner> WithParentPartnerId(this IQueryable<Partner> qry, int? parentPartnerId)
        {
            return from p in qry
                   where p.ParentPartner.PartnerId == parentPartnerId
                   select p;
        }
1
ответ дан 14 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

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