Подтвердить что ты не робот

LINQ, который возвращает rownumber элемента с id == что-то?

Как написать инструкцию LINQ, которая возвращает ROWNUMBER элемента с id == something?

4b9b3361

Ответ 1

Нет прямого способа сделать это, о котором я знаю. Вам придется вытащить весь запрос на клиент, а оттуда вы можете проецировать строки. В качестве альтернативы вы можете написать хранимую процедуру, которая использует ROW_NUMBER, а затем ударить этот процесс из Linq to SQL.

В вашем случае единственный способ, которым вы собираетесь это сделать, - это клиентская сторона. Имейте в виду, что следующий оператор НЕ собирается делать это на сервере, но вытащит всю таблицу и получит индекс на клиенте...

using (var dc = new DataClasses1DataContext())
{
    var result = dc.Users
        .AsEnumerable()     // select all users from the database and bring them back to the client
        .Select((user, index) => new   // project in the index
        {
            user.Username,
            index
        })
        .Where(user => user.Username == "sivey");    // filter for your specific record

    foreach (var item in result)
    {
        Console.WriteLine(string.Format("{0}:{1}", item.index, item.Username));
    }
}

Ответ 2

Чтобы выполнить это, вы должны использовать методы пропустить и принять расширение.

Например, если вы хотите строку 10:

from c in customers
           where c.Region == "somewhere"
           orderby c.CustomerName
           select new {c.CustomerID, c.CustomerName} 
           .Skip(9).Take(1);