【发布时间】:2022-01-14 21:38:45
【问题描述】:
我正在使用 EF Core 5.0 版的 asp.net 核心 Web API。
我写了一个带有 if 条件的查询。
if (incomingFacilities.Count() > 0)
然后我需要过滤incomingFacilities 列表中的设施。
如果(incomingFacilities.Count() < 0)我不需要过滤。我只需要获得 6 个不同的设施列表。
但是写下面的代码。问题是我需要一次又一次地重复相同的代码。
所以我的东西还是里面的if条件比较好
.Where(x => (incomingFacilities.Count() > 0 ) ?
(incomingFacilities.Contains(x.FacilityCode)) :
(x.FacilityCode > 0 )),
在这里我正确地完成了第一部分,(即:如果incomingFacilities.Count() > 0 然后进行过滤。
但第二部分是if incomingFacilities.Count() < 0,则无需过滤,只需发送设施列表(仅6个设施中的不同)
// this code is correct, but same code repeated
if (incomingFacilities.Count() > 0)
{
var hotels = await _context.Hotels
.Where(i => (i.DestinationCode == request.Destination))
.Select(i => new HotelListHotelVm
{
// removed some
HotelFacilities = i.Facilities.Select(x => new HotelListHotelVm.HotelListFacilityVm {
Id = x.Id,
FacilityGroupCode = x.FacilityGroupCode,
HotelFacilityGroupDescription = x.FacilityGroup.Description,
FacilityCode = x.FacilityCode
})
.Where(x => (incomingFacilities.Count() > 0 ) ? (incomingFacilities.Contains(x.FacilityCode)) : (x.FacilityCode > 0 )),
})
// rest
;
}
else
{
var hotels = await _context
.Hotels
.Where(i => (i.DestinationCode == request.Destination))
.Select(i => new HotelListHotelVm
{
// removed some
HotelFacilities = i.Facilities.ToList().Distinct().Take(6)
.Select(x => new HotelListHotelVm.HotelListFacilityVm {
Id = x.Id,
FacilityGroupCode = x.FacilityGroupCode,
HotelFacilityGroupDescription = x.FacilityGroup.Description,
FacilityCode = x.FacilityCode
})
})
// rest
;
}
.Where(x =>(incomingFacilities.Count() > 0 ) ? (incomingFacilities.Contains(x.FacilityCode)) : (x.FacilityCode > 0 )),
这里,
然后我做了If incomingFacilities.Count() > 0,使用 where 子句。
但我不知道怎么说,如果不 incomingFacilities.Count() > 0 然后列出具有不同价值的设施,只取6 个。像这样HotelFacilities = i.Facilities.ToList().Distinct().Take(6)
.Select(x => new HotelListHotelVm.HotelListFacilityVm {
Id = x.Id,
FacilityGroupCode = x.FacilityGroupCode,
HotelFacilityGroupDescription = x.FacilityGroup.Description,
FacilityCode = x.FacilityCode
})
【问题讨论】:
标签: c# entity-framework linq if-statement entity-framework-core