2014-11-26 5 views
2

Я пытаюсь показать результат из базы данных через через который включает в себя совокупное значение из той же таблицы. У меня есть таблица с именем, счетом и раундом, в которой есть имена игроков и баллы для каждого раунда. Я хочу отобразить это в сетке (скажем, я выбираю раунд 5), но я также хочу показать ранг каждого игрока, который является их общим счетом за все раунды до и включая выбранный раунд.LING агрегированный запрос

До сих пор у меня есть два запроса - один возвращает список имен и суммы их круглых баллов, а другой, который получает их имя, набирает для определенного раунда. Мне нужен только индекс суммы, хотя, чтобы получить звание, мне не нужна сумма самого балла. Я пытаюсь включить первый запрос в втором запросе с чем-то вроде

Rank = r1.FindIndex(r => r.Name == tr.Name) 

, но я получаю ошибку «LINQ к Entities не распознает метод„Int32 FindIndex“. Я знаю, почему я получаю это (он не может быть скомпилирован в SQL), но я не могу понять, как обойти его. Итак, как я могу структурировать свой запрос, чтобы он получал строки, которые мне нужны из таблицы, а также факторы в правильном ранге, т. Е. Индексе игрока в первом запросе? Любые советы?

ответ

1

Если вы хотите, чтобы запросы выполнялись в памяти, используйте форму IEnumerable вместо формы IQueryable. Способ сделать это чисто с Linq является .AsEnumerable()

Rank = r1.AsEnumerable().FindIndex(r => r.Name == tr.Name); 

Обратите внимание, что вызов AsEnumerable() необходимо только, если тип времени компиляции является IQueryable. Поскольку мы говорим о методах расширения, они будут называться правильно на основе известного типа во время выполнения - и все IEnumerable методы используют foreach и yield return узор, который будет перебирать запрос SQL в память

+0

Спасибо за помощь, но эта строка теперь говорит, что IEnumerable не содержит определения для FindIndex. – Steve

+1

Это потому, что IEnumerable не имеет определения для FindIndex(). Возможно, это может помочь вам: [Как получить индекс элемента в IEnumerable] (http://stackoverflow.com/questions/1290603/how-to-get-the-index-of-an-element-in- an-ienumerable), если вы будете следовать совету Аравола. – Flaudre

0

Благодаря и Аравол и Флаудре. В итоге просто изменила структуру данных на конце db, чтобы сохранить необходимую мне информацию через представление. Это было проще, чем пытаться понять эти ошибки LINQ.

Смежные вопросы