【问题标题】:linq query cant seem to see my modellinq 查询似乎看不到我的模型
【发布时间】:2014-10-15 22:19:34
【问题描述】:

我的 InventoryGridModel 中有 5 个属性,每个属性都有一个错误,说模型不包含该属性。显然模型是这样,所以不确定是怎么回事,就像代码无法读取模型一样。

型号:

 public class InstrumentGridModel
 {
     public int InstrumentId { get; set; }
     public string ItemName { get; set; }
     public string SerialNumber { get; set; }
     public string CaseNumber { get; set; }
     public string LocationName { get; set; }
     public string SiteCode { get; set; }
 }

应该从数据库中提取信息并填充模型的方法:

    public List<InstrumentGridModel> GetInstruments()
    {
        var results = new List<InstrumentGridModel>();
        var data = from i in db.Instrument
                   join l in db.Location on i.LocationId equals l.LocationId
                   join t in db.InventoryItem on i.ItemId equals t.ItemId
                   select new InstrumentGridModel
                   {
                       InstrumentId = i.InstrumentId,
                       ItemName = t.ItemName,
                       SerialNumber = i.SerialNumber,
                       CaseNumber = i.CaseNumber,
                       LocationName = l.LocationName
                   };

        foreach (var i in data)
        {
            results.Add(new InstrumentGridModel()
            {
                InstrumentId = data.InstrumentId,
                ItemName = data.ItemName,
                SerialNumber = data.SerialNumber,
                CaseNumber = data.CaseNumber,
                LocationName = data.LocationName
            });
        }
        return results;

    }

错误(请注意,这只是一个错误,我在所有 5 个属性上都收到相同的错误):

Error   3   'System.Linq.IQueryable<MusicInventory.Models.InstrumentGridModel>' does not contain a definition for 'ItemName' and no extension method 'ItemName' accepting a first argument of type 'System.Linq.IQueryable<MusicInventory.Models.InstrumentGridModel>' could be found (are you missing a using directive or an assembly reference?)

【问题讨论】:

  • InstrumentId = data.InstrumentId, 应该是InstrumentId = i.InstrumentId,(数据是不包含名为InstrumentId 的属性的集合。
  • 请注意,您不需要 foreach 循环。你可以使用var data = from i in db.Instrument ... select new InstrumentGridModel {InstrumentId = i.InstrumentId, .....}.ToList(); return data;
  • @斯蒂芬。我是这么想的,但如果没有 foreach,我无法让它工作,我收到一个错误“MusicInventory.Models.InstrumentGridModel'不包含'ToList'的定义......”想法?
  • 对不起,需要括号var data = (from ...}).ToList();

标签: c# linq entity-framework asp.net-mvc-4


【解决方案1】:

您正在 foreach 循环中迭代 data。然后,您可以访问data(我猜是System.Linq.IQueryable&lt;MusicInventory.Models.InstrumentGridModel&gt; 类型)。然而你想要做的是使用ìin the loop instead ofdata`,即访问单个项目,而不是集合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多