所以我遇到的问题是在网页搜索中使用正确的数据库项目,由于某种原因它不会搜索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();
示例数据:
BMW存在于Vehicle_Make(Make_ID PK)和Vehicle_Details(Make_ID FK)中。
Vespa存在于Vehicle_Make中,但不存在于Vehicle_Details
如果我搜索宝马它不起作用,但如果我搜索Vespa或Vehicle_Details表中不存在的任何车辆,它会找到这些,但不是两个表中都存在的车辆。
一旦我得到了像宝马这样需要搜索的正确物品,它必须与经销商(用户表)相匹配,并使用MapLat&amp;从“用户”表中选择MapLong,然后将其指向地图。
Vehicle_Details有(User_ID FK),这是用户表的PK。
基本上,Vehicle_Details已将Users和Vehicle_Make链接到它,而Users和Vehicle_Make中没有链接,因此车辆详细信息是链接。这有可能为我所需要的工作吗?