Ответ 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));
}
}