Индексирование элементов группы EF4 linq - PullRequest
1 голос
/ 28 апреля 2011

У меня есть следующая модель ER:

Запись: Id, UserId, .... Факт: Id, EntryId, GroupId, DataType, DataValue ...

У меня есть следующеезапрос linq к контексту данных EF4:

var linq = 
 from entry in DataContext.Entry
 where entry.UserId== User.Identity.UserId
 from fact in entry.Facts
 group fact by new { fact.Entry, fact.GroupId } into g
 select g;

Я хочу назначить индекс для каждой из групп следующим образом:

linq = linq.Select((Group,Index) => new {Group, Index})

, но я получаю исключение System.NotSupportedException.Есть ли другой способ добиться этого в linq to ef?

Я не хочу прибегать к linq для объектов (например, вызывая linq = linq.ToList()), так как я расширяю запрос в коде ихотите выполнить его в 1 sql команде.

1 Ответ

3 голосов
/ 28 апреля 2011

Linq to EF не может использовать индексирование строк (выбор с индексами не поддерживается).Вы должны сделать это в linq для объектов.

var query = // your grouping query;
var linq = query.AsEnumerable().Select((Group,Index) => new {Group, Index});

Linq-для-сущностей поддерживает внутреннюю индексацию строк, только если вы используете методы Take() и Skip() для упорядоченных запросов, но при этом вы не можете использовать строкиИндекс в запросе.

...