【问题标题】:Linq query foreach element in arrayLinq查询数组中的每个元素
【发布时间】:2014-12-01 17:34:32
【问题描述】:

我有一个带有 ActionResult 的控制器,它从 HttpPost 的视图中获取三个数组。 数组是 Id(tableId) 顶部的位置 (positionY) 和左侧的位置 (positionX)。 当您点击保存时,ActionResult 需要更新数据库中相应 id 的所有职位。

这是我的控制器:

private BonTempsDbContext db = new BonTempsDbContext();

[HttpPost]
public ActionResult Index(int[] tableId, int[] tablePosX, int[] tablePosY)
{
    int i = 0;
    foreach (var id in tableId)
    {
        int number = tableId[i];
        Tafel tafel = db.Tafel
            .Where(x => x.id == number)
            .ToList();
        db.Entry(tafel).State = EntityState.Modified;
        i++;
    }
    return View(db.Tafel.ToList());
}

我得到错误:

不能隐式转换类型 'System.Collections.Generic.List' 到 'BonTempsMVC.Tafel'

如果你能从中得到一些有用的东西,这就是我的观点。

@model IEnumerable<BonTempsMVC.Tafel>

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}


<h2>Index</h2>
<div class="VoegToeBtn">
    <a href="/tafel/create">
        <span class="btn btn-default">
            <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Maak nieuw menu aan
        </span>
    </a>
</div>
@using (Html.BeginForm())
    {
    @Html.AntiForgeryToken()

    <div id="tablewrapper">

                @foreach (var item in Model)
                {
                    var positionXId = "posX" + item.id;
                    var positionYId = "posY" + item.id;
                    <div class="draggable ui-widget-content" id="@Html.DisplayFor(ModelItem => item.id)">
                        <input type="text" hidden name="tableId" value="@Html.DisplayFor(ModelItem => item.id)" />
                        <input type="text" hidden name="tablePosX" id="@positionXId" value="" />
                        <input type="text" hidden name="tablePosY" id="@positionXId" value="" />
                        <p>@Html.DisplayFor(ModelItem => item.tafelNaam)</p>
                    </div>

                }
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>
}
<script>
$(".draggable").draggable({
    snap: ".draggable",
    snapMode: "outer",
    stop: function (event, ui) {
        var finalOffset = $(this).offset();
        var finalxPos = finalOffset.left;
        var finalyPos = finalOffset.top;
        var itemId = $(this).attr('id');
        var posXid = "posX" + itemId;
        var posYid = "posY" + itemId;
        $('input:text[id="' + posXid + '"]').attr("value", finalxPos);
        $('input:text[id="' + posYid + '"]').attr("value", finalyPos);
    },
});
</script>

和 tafel 模型:

namespace BonTempsMVC
{
    public class Tafel
    {
        public int id { get; set; }

        public string tafelNaam { get; set; }

        public bool beschikbaar { get; set; }

        public float positionY { get; set; }

        public float positionX { get; set; }
    }
}

【问题讨论】:

  • 你能发布你对 Tafel 对象的定义吗?
  • 我用我的 tafel 模型编辑了我的问题。

标签: c# arrays asp.net-mvc linq


【解决方案1】:

试试这个:-

 List<Tafel> tafel = db.Tafel
                .Where(x => x.id == number)
                .ToList();

在这里,List&lt;Tafel&gt; 被返回,但您将其存储在 Tafel 对象中。
如果您非常确定在Tafel 实体中只有一项与id 匹配,请执行以下操作:-

Tafel tafel = db.Tafel.FirstOrDefault(x => x.id == number);

正如@DavidG 所建议的,您也可以这样做:-

Tafel tafel = db.Tafel.Find(number);

【讨论】:

  • 另外,Tafel tafel = db.Tafel.Find(number); 也可以。
  • 谢谢!真的很有帮助而且很快!现在需要弄清楚如何进行查询以更新每个表中的位置。
猜你喜欢
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多