从LINQ中的多个where条件语句中获取结果

时间:2015-04-29 07:12:26

标签: c# linq

我正在尝试根据变量countrytemp_DestinationGroupNametemp_CountryName的值来获得结果。

如果这些变量中的任何一个为null或0,则它不应包含在where子句和rest语句中,并且应该生成结果。我使用此查询获得零行。请在where子句中向我建议这些条件。我尝试在stackoverflow上使用以下解决方案,但仍未获得所需的结果。

temp_RateTypeId

3 个答案:

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