在Linq Query中忽略Null和Empty字符串匹配

时间:2017-05-10 07:01:35

标签: c# .net linq

如何在执行以下查询时忽略NULL和空字符串匹配?

var tMisMatchList = lstExchgMatch.Any(o =>
    o.MulDivFlg != lstExchgMatch[0].MulDivFlg); 

例如,列表中包含以下数据

  [0] = MulDivFlg = "";     // 1st element in the list whose multdivflag value is ""
  [1] = MulDivFlg = null; // 2nd element in the list whose multdivflag value is null
  [2] = MulDivFlg = null; 
  [3] = MulDivFlg = ""; 

在这种情况下,我的上述查询返回true。自""和NULL不匹配已发生。但我的期望是忽略null和""比较检查。它只会执行不可空和非空字符串匹配。它应该忽略null和""的存在。并将两者视为平等

以上查询返回false,因为它认为null不等于""。 但我希望它返回true并考虑null和""当字符串为空或""。

时,等于或忽略

1 个答案:

答案 0 :(得分:3)

您可以在&& (string.IsNullOrEmpty(o.MulDivFlg) != string.IsNullOrEmpty(lstExchgMatch[0].MulDivFlg)) lambda表达式中添加Any条件:

var tMisMatchList = lstExchgMatch.Any(o => o.MulDivFlg != lstExchgMatch[0].MulDivFlg &&
    (string.IsNullOrEmpty(o.MulDivFlg) != string.IsNullOrEmpty(lstExchgMatch[0].MulDivFlg)));