Непонятно, что это за тип q
, но исходя из вашего использования:
db.tblArcadeGames.OrderByDescending(...)
Предположительно, это класс сущностей из Linq-To-Sql или Entity Framework.В этом случае у вас do определена конкретная сущность, предположительно названная tblArcadeGame
.Поэтому переместите q
из области видимости, не используя var
:
IQueryable<tblArcadeGame> q;
if (CategoryID == 0)
{
q = db.tblArcadeGames.OrderByDescending(c => c.Plays).Take(Fetch);
}
else
{
q = db.tblArcadeGames.Where(c=>c.CategoryID == CategoryID).OrderByDescending(c => c.Plays).Take(Fetch);
}
r = new Game[q.Count()];
int i = 0;
foreach (var g in q)
{
r[i] = new Game(g);
i++;
}
Как видите, повторный код теперь виден только один раз.
PS Такие инструменты, как ReSharper, прекрасно подходят для такого рода вещей.Используя его, одним нажатием клавиши вы можете переключаться между версией var
и версией с явно именованными типами.