Не удалось получить данные из View Model Controller для просмотра, я правильно проверил работу запроса в LINQpad. Однако мне не хватает преобразования вывода запроса, который может отображаться в представлении.Невозможно неявно преобразовать систему типов linq IQueryable в системные коллекции generic Список
У меня есть три модели данных Продукты, изображения, спецификации, которые я объединил в ViewModel только с выбранными свойствами и хочу их отобразить.
public class ViewModelController : Controller
{
private OMSEntities db = new OMSEntities();
// GET: ViewModel
public ActionResult Index()
{
var product = new Product();
var prices = new Price();
var orders = new Order();
ProductRegistrationViewModelVM vm = new ProductRegistrationViewModelVM();
vm =(from p in db.Products
join i in db.Images on p.ProductId equals i.Product_Id
join s in db.Specifications on p.ProductId equals s.Product_Id
select new
{
//Product
p.Name,
p.Produt_Code,
p.Description,
//Image
i.Image_Description,
i.Image_Name,
i.image1,
//Specifications
s.Sz_Measurement_Unit,
s.Size,
s.Wg_Measurement_Unit,
s.Weight,
s.Price_Set,
s.Price_Sold
});
vm.Add(new ProductRegistrationViewModelVM());
return View(vm.ToList());
}
ViewModel класса
public class ProductRegistrationViewModelVM
{
//Products
public int ProductId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Produt_Code { get; set; }
public Nullable<int> Supplier_Id { get; set; }
public IEnumerable<Supplier> Supplier { get; set; }
//Image
public string Image_Description { get; set; }
public string Image_Name { get; set; }
public byte[] image1 { get; set; }
//Specifications
public string Sz_Measurement_Unit { get; set; }
public Nullable<decimal> Size { get; set; }
public string Size_Name { get; set; }
public string Wg_Measurement_Unit { get; set; }
public Nullable<decimal> Weight { get; set; }
public Nullable<int> Price_Set { get; set; }
public Nullable<int> Price_Sold { get; set; }
}
Примечание: Я смотрю на те же вопросы об ошибках в переполнение стека Однако не в состоянии понять это.
CS0266 Ошибка Не удается неявно преобразовать тип «System.Linq.IQueryable < < анонимный тип: строка Имя, строка Produt_Code, строка Описание, строка Image_Description, строка имя_образа, байт [] image1, строка Sz_Measurement_Unit, десятичное? Размер, строка Wg_Measurement_Unit, десятичная? Вес, внутр. Price_Set, int? Price_Sold >> 'to' OMS.ViewModels.ProductRegistrationViewModelVM '. Явное преобразование существует (вы пропали без вести бросок?)
Fix:
В предлагаемых ниже ProductRegistrationViewModelVM выполнен в виде элемента списка, а также ViewModel свойства были связаны для запроса свойств.
public ActionResult Index()
{
var product = new Product();
var prices = new Price();
var orders = new Order();
List<ProductRegistrationViewModelVM> vm = new List<ProductRegistrationViewModelVM>();
vm= (from p in db.Products
join i in db.Images on p.ProductId equals i.Product_Id
join s in db.Specifications on p.ProductId equals s.Product_Id
select new ProductRegistrationViewModelVM()
{
//Product
Name=p.Name,
Produt_Code= p.Produt_Code,
Description = p.Description,
//Image
Image_Description= i.Image_Description,
Image_Name= i.Image_Name,
image1= i.image1,
//Specifications
Sz_Measurement_Unit= s.Sz_Measurement_Unit,
Size= s.Size,
Wg_Measurement_Unit=s.Wg_Measurement_Unit,
Weight=s.Weight,
Price_Set=s.Price_Set,
Price_Sold= s.Price_Sold
}).ToList();
return View(vm);
}
Вам необходимо показать полную информацию об ошибке в вашем вопросе.В вашем запросе создается коллекция анонимных объектов, а не коллекция 'ProductRegistrationViewModelVM'. –
Лучше всего предположить, что вы хотите 'vm = (из p в db.Products .....). Выберите (x => новый ProductRegistrationViewModelV() {Name = x.Name, ....}). ToList(); ', хотя неясно, почему вы добавляете экземпляр по умолчанию, используя' vm.Add (новый ProductRegistrationViewModelVM()); ' –
@StephenMuecke vm.Add (новый ProductRegistrationViewModelVM()); автоматически генерируется в методе индекса контроллеров. – Arun3x3