繁体   English   中英

使用LINQ从存储过程获取单列结果作为列表

[英]Get single column results as a list from a stored procedure using LINQ

这是我的代码,我试图从存储过程中获取Equipment列表,并且代码方案与其他方案大不相同,因为我无法使其工作。

我已经尝试了多种方法,可以在给定的代码中看到,但没有任何效果

public ActionResult Test()
{
    var model = new ViewModels()
        {
            ModelEquipmentRequestResult = new List<EquipmentRequest_Result>()
            {
                new EquipmentRequest_Result()
                {
                   EquipmentName = db.EquipmentRequest().ToList().ToString()
          //         (from a in new db.EquipmentRequest

          //select new EquipmentRequest { a.EquipmentName}).ToList();
                   // ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<EquipmentRequest_Result>("EquipmentRequest").ToList().TooString()
                   //db.EquipmentRequest().AsQueryable<EquipmentRequest_Result>(),

                   //custq.AsEnumerable()
                   //   .Select(o => new EquipmentRequest_Result() {
                                      // EquipmentName = o.EquipmentName
                      //}).ToList()

                }
            },
            ModeleEquipmentSpViewModel = new EquipmentSpViewModel()
        };
        ViewBag.project = db.PMSProjects.ToList();

        return View(model);
}

行代码

EquipmentName = db.EquipmentRequest().ToList().ToString()

返回如下内容:

EquipmentName   
System.Collections.Generic.List`1[ProjectManagementSystem.EntityDataModel.EquipmentRequest_Result]

这是存储过程查询:

SELECT 
    e.EquipmentName, 
    NULL AS Id, 
    NULL AS EquipmentRequestId, 
    NULL AS EquipmentId, 
    NULL AS Planned, 
    NULL AS Actual, 
    NULL AS Remarks 
FROM 
    PECEquipment AS e

这是我将其绑定的视图

@model ProjectManagementSystem.ViewModel.ViewModels

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>TestPartail</title>
</head>
<body>
    <div>
        @for (int i = 0; i < Model.ModelEquipmentRequestResult.Count; i++)
        {
            <div>
                @Html.LabelFor(m => m.ModelEquipmentRequestResult[i].EquipmentName)
                @Html.DisplayFor(m => m.ModelEquipmentRequestResult[i].EquipmentName)
            </div>
            <div>
                @Html.LabelFor(m => m.ModelEquipmentRequestResult[i].Planned)
                @Html.EditorFor(m => m.ModelEquipmentRequestResult[i].Planned)
            </div>
    <div>
        @Html.LabelFor(m => m.ModelEquipmentRequestResult[i].Actual)
        @Html.EditorFor(m => m.ModelEquipmentRequestResult[i].Actual)
    </div>
        }
    </div>
</body>
</html>

经过澄清:

var model = new ViewModels()
    {
        ModelEquipmentRequestResult = db.EquipmentRequest().Select(result => new EquipmentRequest_Result
        {
               EquipmentName = r.EquipmentName,
               Planned = r.Planned, //replace with DB column name
               Actual = r.Actual //replace with DB column name
        }).ToList(),
        ModeleEquipmentSpViewModel = new EquipmentSpViewModel()
    };

上面的答案做同样的事情。

尝试这个:

List<EquipmentRequest_Result> output = db
      .EquipmentRequest()
      .Select(x=> new EquipmentRequest_Result { EquipmentName = x.EquipmentName })
      .ToList()

编辑:专门针对此问题的方案

var model = new ViewModels()
            {
                ModelEquipmentRequestResult = db
                    .EquipmentRequest()
                    .Select(x=> new EquipmentRequest_Result { EquipmentName = x.EquipmentName })
                    .ToList(),
                ModeleEquipmentSpViewModel = new EquipmentSpViewModel()
            };
return View(model);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM