Как избавиться от этой ошибки в asp.net-mvc? - PullRequest
0 голосов
/ 29 апреля 2010

Я использую Linq-to-sql в качестве ORM. Я написал это innerjoin

public IQueryable<Material> FindAllMaterials()
 {
   var materials=from m in db.Materials
               join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id
               select new { m.Mat_id, 
               m.Mat_Name, 
               Mt.Name, 
                m.Mat_Type };

  return materials;
 }

Но когда я скомпилировал это, я получил ошибку

Cannot implicitly convert type 'System.Linq.IQueryable<AnonymousType#1>' 
to 'System.Linq.IQueryable<CrMVC.Models.Material>'. 
An explicit conversion exists (are you missing a cast?)

Я что-то упускаю ... Любое предложение ....

EDIT:

Мой sql запрос

select M.Mat_id,M.Mat_Name,T.Name as Measurement,M.Mat_Type as Description
from Material as M inner join 
    MeasurementTypes as T on M.MeasurementTypeId = T.Id where M.Is_Deleted=0

Ответы [ 2 ]

1 голос
/ 29 апреля 2010

попробовать этот

только что добавил "новый материал ()" ....

public IQueryable<Material> FindAllMaterials()
 {
   var materials=from m in db.Materials
               join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id
               select new Material(){ Mat_id = m.Mat_id, 
                Mat_Name = m.Mat_Name, 
                Mat_Type = m.Mat_Type };

  return materials;
 }
0 голосов
/ 29 апреля 2010

Чтобы получить тот же набор результатов, что и ваш SQL, попробуйте:

    public class MatertialSet
    {
        public int Mat_id  { get; set; }
        public string Mat_name { get; set; }
        public string Measurement { get; set; }
        public string Description { get; set; }
    }

    public static IQueryable<MatertialSet> FindAllMaterials()
    {
        var materials = from m in db.Materials
                        join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id
                        select new MatertialSet
                        {
                            Mat_id = m.Mat_Id,
                            Mat_name = m.Mat_Name,
                            Description = Mt.Name,
                            Measurement = m.Mat_Type
                        };
        return materials.AsQueryable();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...