C# 在实体框架中,如何通过一列上的多个值和其他列上的不同值从数据库中获取数据?
我想从两个具有多个可选值的表中搜索数据库中的数据C# 在实体框架中,如何通过一列上的多个值和其他列上的不同值从数据库中获取数据?,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我想从两个具有多个可选值的表中搜索数据库中的数据 [HttpPost] public ActionResult GetAll(Details objDetail) { 首先,我创建用于查询的AsQueryable对象 var searchQuery = (from acc in AppDB.tblAccount join user in AppDB.tblUser on acc.uID equals user.uID
[HttpPost]
public ActionResult GetAll(Details objDetail)
{
首先,我创建用于查询的AsQueryable
对象
var searchQuery = (from acc in AppDB.tblAccount
join user in AppDB.tblUser on acc.uID equals user.uID
select new { acc, user }).AsQueryable();
然后我对这个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);
当我有记录时,我得到零记录,如果我发送单城市值,则得到记录
那么,如何通过多个城市值获取数据呢?当您循环时,您将得到循环中最后一个城市的行。对于所有城市,您需要使用
Any
或contains
,如:
searchQuery = searchQuery.Where(x => objDetail.City.Contains(x.user.City));
现在,它将在搜索中找到与集合中城市匹配的所有行objDetail.City
searchQuery = searchQuery.Where(x => objDetail.City.Contains(x.user.City));