我有3个表格Project,Province,ProjProvRel

在我的项目页面中,当我添加数据时,我为每个项目选择多个省
表示我的省份是多选下拉列表。

我插入了正在运行的数据,得到了插入的ID,并使用选定的Province of ID将其添加到ProjProvRel

现在,在详细信息视图中,我想显示我的数据,但无法解决。

这是我的代码:

    // GET: Project/Details/5
    public ActionResult Details(int? id)
    {
        if (id == null)
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

        var mydata = db.Projects.Find(id);
        if (mydata == null)
        {
            return HttpNotFound();
        }
        var prov_id =  from o in db.ProRel where o.ProjectId.Equals(id) select o.ProvinceIds;
        foreach (var p_id in prov_id)
        {
            int[] PIds = new int[] {p_id};
        }
        var Prov= from c in db.Provinces where c.ID in pIds;
        ViewBag.Province = Prov;
        return View(mydata);
    }


一个问题是如何根据条件从表中选择数据

var prov_id =  from o in db.ProRel where o.ProjectId.Equals(id) select o.ProvinceIds;


上面的查询正确吗?我是ASP.Net MVC的新手
还吹查询是正确的吗?

var Prov= from c in db.Provinces where c.ID in pIds;


如何从Table Province中的PIds中的Province.ID中选择数据

最佳答案

从ProRel中获取ProjectId与ID匹配的行:

var prov_ids = db.ProRel.Where(r => r.ProjectId == id).Select(r => r.ProvinceId);


从prov_id中可以找到省份:

var provs = db.Provinces.Where(p => prov_id.Any(i => p.ID == i));


我希望您不要介意lambda样式的LINQ。

另外,我认为您应该考虑变量命名。例如,prov_id提供了单个id的概念,并且由于您隐式声明了类型,因此很难以其他方式分辨出来。

关于c# - ASP.Net MVC 5 Entity Framework 选择在何处?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27164375/

10-13 08:24
查看更多