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));