在使用Linq今天多表关联查询时关联表查询还算是比较复杂的,今天遇到一个关联表查询而且还是多条件不定项查询,查询条件可有可无,要进行linq查询,一开始也是没思路,网上百度了好多,终于找到解决方法,在where中使用三则运算来判断查询条件是否存在。
entities = from e in entities join h in houses on e.HouseId equals h.Id join v in villages on h.VillageId equals v.Id where (search.CompanyId == 0 ? true : v.CompanyId == search.CompanyId) && (string.IsNullOrWhiteSpace(search.KeyWord.Trim()) ? true : (v.Name.Contains(search.KeyWord) || v.CounName.Contains(search.KeyWord) || v.CityName.Contains(search.KeyWord))) && (string.IsNullOrWhiteSpace(search.CityCode) ? true : v.CityCode == search.CityCode) && (string.IsNullOrWhiteSpace(search.CounCode) ? true : v.CounCode == search.CounCode) && (search.CompanyId == 0 ? true : h.CompanyId == search.CompanyId) && (search.RoomCount == 0 ? true : h.RoomCount == search.RoomCount) && (search.CompanyId == 0 ? true : e.CompanyId == search.CompanyId) && (search.RentMaxMoney.HasValue && search.RentMaxMoney.Value > 0 ? e.RentMoney <= search.RentMaxMoney.Value : true) && (search.RentMinMoney.HasValue && search.RentMinMoney.Value > 0 ? e.RentMoney >= search.RentMinMoney.Value : true) && (search.RentType.HasValue ? e.RentType == search.RentType.Value:true) && e.IsOnShelf select e;