abb*_*med 5 c# asp.net-mvc entity-framework
我想从具有多个可选值的两个表中搜索数据库中的数据。
[HttpPost]
public ActionResult GetAll(Details objDetail)
{
Run Code Online (Sandbox Code Playgroud)
首先,我正在创建AsQueryable用于查询的对象。
var searchQuery = (from acc in AppDB.tblAccount
join user in AppDB.tblUser on acc.uID equals user.uID
select new { acc, user }).AsQueryable();
Run Code Online (Sandbox Code Playgroud)
然后我对这个AsQueryable对象一一应用条件。
if (objDetail.Type != null)
searchQuery = searchQuery.Where(x => x.acc.Type == objDetail.Type);
if (objDetail.Category!= null)
searchQuery = searchQuery.Where(x => x.acc.Category== objDetail.Category);
if (objDetail.City.Length != 0)
for (int i = 0; i <= objDetail.City.Length - 1; i++)
{
string singleCity = objDetail.City[i];
searchQuery = searchQuery.Where(x => x.user.City.Contains(singleCity));
}
if (objDetail.Place!= null)
searchQuery = searchQuery.Where(x => x.user.Place== objDetail.Place);
if (objDetail.Price != null)
searchQuery = searchQuery.Where(x => x.acc.Price == objDetail.Price);
searchQuery = searchQuery.Where(x => x.user.IsActive == true &&
x.user.IsDelete == false &&
x.acc.IsActive == true &&
x.acc.IsDelete == false);
Run Code Online (Sandbox Code Playgroud)
然后最后我试图searchQuery通过选择如下列来将数据从对象获取到其他对象中
var searchedAccList = (from result in searchQuery
select new
{
Id = result.acc.aID,
UserId = result.user.uID,
Name = result.user.Name,
AccountType = result.acc.Type,
City = result.user.City,
}).ToList();
return Json(searchedAccList, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
我在有记录的地方得到零记录,如果我发送单个城市值,则获取记录。
那么如何通过多个城市值来获取数据呢?
当你循环时,你最终会得到循环中最后一个城市的行。您需要在所有城市中使用Any或在单个位置,例如:contains
searchQuery = searchQuery.Where(x => objDetail.City.Contains(x.user.City));
Run Code Online (Sandbox Code Playgroud)
现在它将在搜索中带来与集合中的城市匹配的所有行objDetail.City