C# ASP.NET Web API搜索多个表

C# ASP.NET Web API搜索多个表,c#,asp.net-web-api,full-text-search,linq-to-entities,C#,Asp.net Web Api,Full Text Search,Linq To Entities,我有一个搜索功能,可以在两个相关的表和一个不相关的表中搜索特定的单词。 Owner表和Registration表是相关的,Vehicle表与其他两个表没有关系。 我尝试了多种方法来解决这个问题,但没有一种有效。下面是有问题的代码 到目前为止,我尝试在ViewModel中放置三个表,并在我的控制器搜索方法中调用它 Owner Table public int OwnerId {get;set;} public string FirstName {get;set;} public string La

我有一个搜索功能,可以在两个相关的表和一个不相关的表中搜索特定的单词。 Owner表和Registration表是相关的,Vehicle表与其他两个表没有关系。 我尝试了多种方法来解决这个问题,但没有一种有效。下面是有问题的代码

到目前为止,我尝试在ViewModel中放置三个表,并在我的控制器搜索方法中调用它

Owner Table
public int OwnerId {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}

Registration Table
public int RegistrationId {get; set;}
public DateTime RegisteredDate {get; set;}
public string RegistrationLocation {get;set;}
public int OwnerId {get;set;}

Vehicle Table
public int VehicleId {get;set;}
public string VehicleName {get;set;}
public DateTime VehicleYear {get;set;}
public string Model {get;set;}

SearchViewModel

public IEnumerable<Owner> Owners {get;set;}
public IEnumerable<Registration> Registrations {get;set;}
public IEnumerable<Vehicle> Vehicles {get;set;}

Controller

[HttpGet]
 public SearchViewModel Search(string searchString)
{ 
   SearchViewModel searchVM = new SearchViewModel();
   searchVM.Owner = searchVM.Owner.Where(o => o.FirstName.Contains(searchString));
   searchVM.Registration = searchVM.Registration.Where(r => r.RegistrationLocation.Contains(searchString));
   searchVM.Vehicle = searchVM.Vehicle.Where(v => 
   v.Model.Contains(searchString));

   return searchVM;
}

结合你的两次尝试。在第一次尝试中,您将构建一个视图模型,但不查询数据库。在第二次尝试中,您将查询数据库,但不构建视图模型。两者都做

例如:

var searchVM = new SearchViewModel();

searchVM.Owners = _context.Owner.Where(o => o.FirstName.Contains(searchString));
searchVM.Registrations = _context.Registration.Where(r =>  r.RegistrationLocation.Contains(searchString));
searchVM.Vehicles = _context.Vehicle.Where(v => v.Model.Contains(searchString));

return searchVM;

什么不起作用?您是否实际查询过数据库?看起来您正在查询视图模型本身,但它从哪里获得数据?我没有看到从dbHi-David检索数据的方法,这可能是我出错的地方。我需要查询数据库。我该怎么做?@ChrisH.:如果您目前根本没有查询数据库的代码,那么您应该从ASP.NET MVC/WebAPI中使用数据库的教程开始。实体框架通常是用于此目的的框架;var registration=来自_上下文中的注册。注册选择注册;var vehicle=来自_上下文中的车辆。车辆选择车辆;你是个天才。非常感谢你。我注意到的另一件事是,当我搜索特定单词时,它只检索与数据库中的数据匹配的结果。如何搜索不区分大小写的结果?例如,我希望能够搜索car&car。现在,我只能根据Car@ChrisH.:可能有一种更优雅的方法,但我通常只是在相关字符串后面加上.ToLower,所以它们都是小写的。例如:.Whereo=>o.FirstName.ToLower.ContainssearchString.tolowery您在@David上又做了一次。再次感谢您的帮助!
var searchVM = new SearchViewModel();

searchVM.Owners = _context.Owner.Where(o => o.FirstName.Contains(searchString));
searchVM.Registrations = _context.Registration.Where(r =>  r.RegistrationLocation.Contains(searchString));
searchVM.Vehicles = _context.Vehicle.Where(v => v.Model.Contains(searchString));

return searchVM;