Используя эту строку в вашем выражении linq:
select new {x, y}
вы создаете новый анонимный тип , который отличается от ваших типов сущностей.
Я предполагаю, что вы не используете EntityFramework или какую-либо другую тяжелую среду, которая автоматически разрешает отношения с внешним ключом для создания связанных сущностей. Если true, то да, вам нужно будет создать ViewModel.
Просто создайте простой класс-оболочку, который содержит один из каждого объекта в качестве свойства.
public class MyViewModel
{
public MyViewModel(LU_LST_CategoryTypeSet x, LU_LST_LevelSet y)
{
Category = x;
Level = y;
}
public LU_LST_CategoryTypeSet Category { get; set;}
public LU_LST_LevelSet Level { get; set; }
}
Затем в своем выражении Linq вместо создания анонимных типов создайте типы MyViewModel:
public IQueryable GetAllTypesInCategory(int CatID)
{
return (from x in DBEntities.LU_LST_CategoryTypeSet
where x.CategoryID == CatID && x.Enabled == 1
join y in DBEntities.LU_LST_LevelSet on x.LevelID equals y.ID
select new {x, y});
}
Затем скопируйте результаты в классы вашей модели:
var listOfTypes = GetAllTypesInCategory(catID);
foreach (var item in listOfTypes)
{
var model = new MyViewModel(item.x, item.y);
//Do whatever with the model to get it to the view.
}
Сделайте ваш вид наследовать от MyViewModel.