Функция SQL для LINQ to SQL - PullRequest
       2

Функция SQL для LINQ to SQL

0 голосов
/ 08 мая 2011

Я хочу изменить следующую процедуру sql на LINQ to SQL, кто-нибудь может мне помочь, пожалуйста.

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Наиболее эффективным способом выполнения запроса в SQL Server было бы использование Общих табличных выражений (короткое CTE) .Напишите хранимую процедуру и вызовите ее из Linq2Sql.Нет реального эффективного способа сделать это в чистом Linq, кроме способа, описанного Стивеном (вытащить работодателя, а затем рекурсивно вызвать функцию), который привел бы к значительному количеству запросов в БД.

1 голос
/ 08 мая 2011

Попробуйте это:

public string[] ShowHierarchy(int employeeId)
{
    using (var db = new YourDataContext("yourConStr"))
    {
        return ShowHierarchyRecursive(db, employeeId, 1)
            .ToArray();
    }
}

private IEnumerable<string> ShowHierarchyRecursive(
    YourDataContext db, int employeeId, int level)
{
    // get the name of employeeId from db

    // yield return that name

    // get the list of people managed by that employeeId

    // foreach employee in that list,
    // call the ShowHierarchyRecursive, and
    // foreach item in the returned list yield return
    // that item.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...