2010-04-28 63 views
0
public ActionResult Index() 
    { 
     testEntities6 devicesEntities = new testEntities6(); 
     List<DevicesModel> devicesModel = new List<DevicesModel>(); 
     var device_query = from d in devicesEntities.device 
      join dt in devicesEntities.devicetype on d.DeviceTypeId equals dt.Id 
      join l in devicesEntities.location on d.Id equals l.DeviceId 
      join loc in devicesEntities.locationname on l.LocationNameId equals loc.Id 
          where l.DeviceId == d.Id 
          select new { 
           //devices 
           d.Id, 
           d.DeviceTypeId, 
           d.SerialNumber, 
           d.FirmwareRev, 
           d.ProductionDate, 
           d.ReparationDate, 
           d.DateOfLastCalibration, 
           d.DateOfLastCalibrationCheck, 
           d.CalCertificateFile, 
           d.Notes, 
           d.TestReportFile, 
           d.WarrantyFile, 
           d.CertificateOfOriginFile, 
           d.QCPermissionFile, 
           d.Reserved, 
           d.ReservedFor, 
           d.Weight, 
           d.Price, 
           d.SoftwareVersion, 
           //devicetype 
           dt.Name, 
           dt.ArticleNumber, 
           dt.Type, 
           //location 
           l.StartDate, //AS LastStartDate, 
           l.LocationNameId, 
           //locationname 
           Loc_name = loc.Name //AS CarrentLocation 
          }; 

     foreach (var dv in device_query) { 
      devicesModel.Add(new DevicesModel(
       //device 
       DeviceTypeId = dv.DeviceTypeId, 
     /*Why I have this error: The name 'DeviceTypeId' does not exist in the current context*/ 
       ... 
       )); 

     } 
     return View(devicesModel); 
    } 

型号:数据模型问题

因为你在你的LINQ创建一个匿名对象
public class DevicesModel 
{ 
//device 
public int deviceTypeId; 
public int id; 
public int serialNumber; 
public string firmwareRev; 
public DateTime productionDate; 
public DateTime reparationDate; 
public DateTime dateOfLastCalibration; 
public DateTime dateOfLastCalibrationCheck; 
public int calCertificateFile; 
public string notes; 
public int testReportFile; 
public int warrantyFile; 
public int certificateOfOriginFile; 
public int qCPermissionFile; 
public int BReserved; 
public string reservedFor; 
public double weight; 
public int price; 
public string softwareVersion; 
//devicetype 
public string name; 
public string qrticleNumber; 
public string type; 
//location 
public DateTime startDate; 
public int locationNameId; 
//locationname 
public string loc_name; 

public DevicesModel(){} 

//device 
public int DeviceTypeId{get;set;} 
public int Id { get; set; } 
public int SerialNumber { get; set; } 
public string FirmwareRev { get; set; } 
public DateTime ProductionDate { get; set; } 
public DateTime ReparationDate { get; set; } 
public DateTime DateOfLastCalibration { get; set; } 
public DateTime DateOfLastCalibrationCheck { get; set; } 
public int CalCertificateFile { get; set; } 
public string Notes { get; set; } 
public int TestReportFile { get; set; } 
public int WarrantyFile { get; set; } 
public int CertificateOfOriginFile { get; set; } 
public int QCPermissionFile { get; set; } 
public int bReserved { get; set; } 
public string ReservedFor { get; set; } 
public double Weight { get; set; } 
public int Price { get; set; } 
public string SoftwareVersion { get; set; } 
//devicetype 
public string Name { get; set; } 
public string ArticleNumber { get; set; } 
public string Type { get; set; } 
//location 
public DateTime StartDate { get; set; } 
public int LocationNameId { get; set; } 
//locationname 
public string Loc_name { get; set; } 
} 
+1

为什么你有属性和公共变量?像'public int Id {get;组; }独立工作,并且与变量id没有关系。 – Kobi 2010-04-28 10:13:57

+1

-1:什么问题?这很长很难阅读。标题含糊不清。 – 2010-04-28 10:14:19

回答

1

它的“选择”的条款。我想你想创建一个你的DevicesModel类的实例,例如

... 
where l.DeviceId == d.Id 
select new DevicesModel { 
//devices 
Id = d.Id, 
... 
+0

什么(在这种情况下)我写在foreach语句,即什么投入:返回查看(???) – Ognjen 2010-04-28 10:16:59

+0

对不起,我不太明白你的意思? – JonoW 2010-04-28 10:58:13

+0

tnx,我解决了我的问题 – Ognjen 2010-04-28 18:10:31

1

我想你打算使用的,而不是圆括号大括号。

new DevicesModel 
{ 
    //device 
    DeviceTypeId = dv.DeviceTypeId, 
    ... 
} 

还是你想在C#4中使用命名参数?