Если вы хотите установить 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
Я не думаю, что linq-to-sql имеет хорошее решение этой проблемы. Так как Вы используете SQL-сервер 2005, можно использовать CTEs, чтобы сделать иерархические запросы. Или хранимая процедура или встроенный запрос (использующий DataContext. ExecuteQuery), добьется цели.
Хорошо вот ужасная срочно отправленная реализация с помощью LINQ. Не используйте это :-)
public IQueryable GetCategories(Category parent)
{
var cats = (parent.Categories);
foreach (Category c in cats )
{
cats = cats .Concat(GetCategories(c));
}
return a;
}
Производительный подход должен создать вставить/изменить/удалить триггер, который поддерживает совершенно другую таблицу, которая содержит пар предка узла для всех предков всех узлов. Таким образом, поиск является O (N).
Для использования его для получения всех продуктов, принадлежащих узлу и всем его потомкам, можно просто выбрать все узлы категории, которые имеют целевой узел как предка. После этого Вы просто выбираете любые продукты, принадлежащие любой из этих категорий.
Путем я обрабатываю, это при помощи некоторых дополнительных методов (фильтры). Я описал некоторый пример кода из проекта, на котором я реализовал это. Посмотрите конкретно на строки, где я заполняю объект 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;
}