2017-05-10 7 views
3

以下のクエリの実行中にNULLと空の文字列の一致を無視する方法はありますか?例えば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と等しいとみなしたり、無視したりしたいと思います。あなたのAnyラムダ式で&& (string.IsNullOrEmpty(o.MulDivFlg) != string.IsNullOrEmpty(lstExchgMatch[0].MulDivFlg))条件を追加することができ

+0

今、結果が何であるかを追加してください、あなたは、[この](http://stackoverflow.com/questions参照 –

+0

受け取るために何を期待結果/ 9606979/string-isnullorwhitespace-in-linq-expression)。 –

+0

私の質問を予想される出力@ S.Petrosovで更新しました –

答えて

3

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

ありがとうございました。 –

+0

@ArpitaDuttaようこそ – Ian

関連する問題