我正在尝试根据变量country
,temp_DestinationGroupName
和temp_CountryName
的值来获得结果。
如果这些变量中的任何一个为null或0,则它不应包含在where子句和rest语句中,并且应该生成结果。我使用此查询获得零行。请在where子句中向我建议这些条件。我尝试在stackoverflow上使用以下解决方案,但仍未获得所需的结果。
temp_RateTypeId
答案 0 :(得分:2)
(w.DestinationGroupName == temp_DestinationGroupName || temp_DestinationGroupName!= null)
只要您的输入变量temp_DestinationGroupName
不为空,此处的条件将返回true。我不认为这就是你的想法。
答案 1 :(得分:1)
您可以拆分许多Where
以使您的请求更具可读性:
var Rows = _CustomerRatesList.Where(w => w.Id != rates.Id)
.Where(w => w.DestinationGroupName != temp_DestinationGroupName || temp_DestinationGroupName != null)
.Where(w => w.CountryName != temp_CountryName || temp_CountryName != null)
.Where(w => w.RateTypeId != temp_RateTypeId || temp_RateTypeId !=0);
请注意,您必须在所有!=
的第一个条件中使用Where
,这样您才能获得所有数据,除非它为空。在您的逻辑中,条件可能是==
:
var Rows = _CustomerRatesList.Where(w => w.Id != rates.Id)
.Where(w => w.DestinationGroupName == temp_DestinationGroupName || temp_DestinationGroupName == null)
.Where(w => w.CountryName == temp_CountryName || temp_CountryName == null)
.Where(w => w.RateTypeId == temp_RateTypeId || temp_RateTypeId ==0);
每个Where
结果为IEnumerable
,行数为IEnumerable
。如果您想要List
,只需添加.ToList()
答案 2 :(得分:0)
我得到了这个问题的解决方案,现在我得到了过滤结果。 谢谢大家的时间:)
var otherRows = _CustomerRatesList.Where(w => w.Id != rates.Id)
.Where(w => w.DestinationGroupName == temp_DestinationGroupName || temp_DestinationGroupName == null)
.Where(w => w.CountryName == temp_CountryName || temp_CountryName == null)
.Where(w => w.RateTypeId == temp_RateTypeId || temp_RateTypeId == 0);