【问题标题】:Select By Key Values from a LINQ Query in a view从视图中的 LINQ 查询中按键值选择
【发布时间】:2013-12-18 23:35:44
【问题描述】:

我试图从 LINQ 查询中获取每个键值并将它们拉到我的视图中。 LINQ 查询如下所示:

Public Property ByVDN As IEnumerable
    Get
        Dim valQ = (From scr In Var.db.CareSideA.ScriptCrossReferences
                   Join s In Var.db.CareSideA.Scripts On s.ScriptID Equals scr.ScriptID
                   Join ms In Var.db.CareSideA.MasterScripts On s.MasterScriptID Equals ms.MasterScriptID
                   Join svce In Var.db.CareSideA.Services On svce.SkillTargetID Equals scr.ForeignKey
                   Join p In Var.db.CareSideA.Peripherals On svce.PeripheralID Equals p.PeripheralID
                   Join sm In Var.db.CareSideA.ServiceMembers On svce.SkillTargetID Equals sm.ServiceSkillTargetID
                   Join sg In Var.db.CareSideA.SkillGroups On sm.SkillGroupSkillTargetID Equals sg.SkillTargetID
                   Where s.Version = ms.CurrentVersion And scr.TargetType = 1 And svce.PeripheralNumber = Value
                   Select New With {Key .Service = svce.PeripheralNumber,
                                    Key .ScriptName = ms.EnterpriseName,
                                    Key .Peripheral = p.EnterpriseName,
                                    Key .SkillMapping = sg.PeripheralNumber,
                                    Key .LatestVersion = s.Version,
                                    Key .Created = s.DateTime,
                                    Key .Author = s.Author}).ToList
        Return valQ
    End Get
    Set(value As IEnumerable)
    End Set
End Property

现在这确实返回了结果,但它们看起来像这样:

理想情况下,我希望能够做到这一点:

<table>
For Each Item In Model.ByVDN
  Dim i = Item
    <tr>
      <td>@Html.DisplayFor(Function(m) i.Service)</td>
      <td>@Html.DisplayFor(Function(m) i.ScriptName)</td>
      <td>@Html.DisplayFor(Function(m) i.Peripheral)</td>
   Next

等等……

【问题讨论】:

    标签: vb.net asp.net-mvc-3 linq entity-framework razor


    【解决方案1】:

    你不能传递匿名对象。 Well, you can, but it is not strongly typed。您必须使用这些属性定义一个类,创建该类实例的 IEnumerable 并将该 Enumerable 传递给视图。没有其他办法。

    UPD:查看类似问题:passing linq select query to the method

    【讨论】:

    • 在过去 2 年的 MVC 工作中,我得出的结论是,为每个视图创建一个视图模型是值得的。特别是如果应用程序做了一些非基本的事情并且您打算进一步开发它。
    • 我完全同意。这正是我将要做的,但是我们的代码冻结到 2 月。在此之前我无法将新视图推送到我们的 SQL 服务器“/
    • 视图模型的 C# 类如何连接到您的 SQL Server 视图?你的工作流程是什么?
    • 不幸的是,我不得不遵循数据库优先的方法。我的公司有一个 .NET 开发人员,他在这里工作时学会了如何开发 asp.net 表单,做了一件垃圾工作,要求加薪 10000 美元,然后在他没有如愿以偿时离开了。我被雇来收拾烂摊子。不幸的是,一切都必须用 vb.net 而不是 c# 编写。
    • 我认为您需要这篇文章lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models - 将有大量信息和关键字供进一步研究。 Jimmy Bogard 有一篇关于 MVC 的不错的博客 - 每篇文章都值得一读。
    猜你喜欢
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多