MVC列表不能正常工作

时间:2017-03-10 09:26:35

标签: asp.net list asp.net-mvc-4

所以我遇到的问题是在网页搜索中使用正确的数据库项目,由于某种原因它不会搜索Vehicle_Details中存在的Vehicle_Make的所有值 - Make_ID是主键Vehicle_Make,它是Vehicle_Details中的FK。

会发生什么,它会在列表中显示页面上的所有项目,但搜索任何这些项目时搜索不起作用。

public class MapController : Controller
{
    private GoogleMapEntities db = new GoogleMapEntities();
    // GET: Map
    public ActionResult Index()
    {
            GoogleMapEntities GE = new GoogleMapEntities();
            List<Vehicle_Details> vehList = db.Vehicle_Details.ToList();
            GoogleMapViewModel GMviewmodel = new GoogleMapViewModel();

            List<GoogleMapViewModel> GMviewmodelList = vehList.Select(x=>      new GoogleMapViewModel {
                Make_Name = x.Vehicle_Make.Make_Name,
                Make_ID = x.Vehicle_Make.Make_ID,
                User_ID = x.User.User_ID,
                MapLat = x.User.MapLat,
                MapLong = x.User.MapLong
               // Dealer_name = x.User.Dealer_name
            }).ToList();


        return View(GMviewmodelList);               
    }

    [HttpPost]
    public ActionResult Search(string Location)
    {

           GoogleMapEntities GE = new GoogleMapEntities();

        ////SELECT Make_Name DATA FROM DB1
        var result = GE.Vehicle_Make.Where(x => x.Make_Name.StartsWith(Location)).ToList();
        var GetVeh = (from vd in db.Vehicle_Details
                      join vm in db.Vehicle_Make
                      on vd.Make_ID equals vm.Make_ID
                      join u in db.User
                      on vd.User_ID equals u.User_ID
                      select vm).ToList();

        //SELECT ALL ELEMENTS FROM Veh Make TABLE THAT EXISTS ON Veh Details TABLE BASED ON EXISTING ID's            
        var resultFinal = (from e in result
                           where !(from m in GetVeh
                                   select m.Make_ID).Contains(e.Make_ID)
                           select e
                          ).ToList();

        return Json(resultFinal, JsonRequestBehavior.AllowGet);

    }
}

另一个奇怪的事情是,如果我添加“!”在下面的代码中,它确实返回车辆详细信息表中不存在的车辆,但没有“!”,它不会搜索两个表中都存在的值。

var resultFinal = (from e in result
where !(from m in GetVeh 
select m.Make_ID).Contains(e.Make_ID)
select e
).ToList();

示例数据:

  1. BMW存在于Vehicle_Make(Make_ID PK)和Vehicle_Details(Make_ID FK)中。

  2. Vespa存在于Vehicle_Make中,但不存在于Vehicle_Details

  3. 如果我搜索宝马它不起作用,但如果我搜索Vespa或Vehicle_Details表中不存在的任何车辆,它会找到这些,但不是两个表中都存在的车辆。

    一旦我得到了像宝马这样需要搜索的正确物品,它必须与经销商(用户表)相匹配,并使用MapLat&amp;从“用户”表中选择MapLong,然后将其指向地图。

    Vehicle_Details有(User_ID FK),这是用户表的PK。

    基本上,Vehicle_Details已将Users和Vehicle_Make链接到它,而Users和Vehicle_Make中没有链接,因此车辆详细信息是链接。这有可能为我所需要的工作吗?

0 个答案:

没有答案