2017-03-29 2 views
-2

複数のフィールドに基づいて2つのコレクション間で不一致なレコードを取得しようとしています。Linq- 2つのコレクションの複数のフィールドに基づいて不一致レコードを取得する方法

public class Emp 
{ 

    public int Id { get; set; } 
    public string Name { get; set; } 
    public int Amount { get; set; } 

public IList<Emp> GetMasterDetails() 
    { 
     IList<Emp> masterList = new List<Emp>    
     { 
      new Emp { Id = 952491, Name = "Z005HY11", Amount = 500 }, 
      new Emp { Id = 952491, Name = "Z005H717", Amount = 500 }, 
      new Emp { Id = 1191676, Name = "Z005H717", Amount = 400 }     
     }; 
     return masterList; 
    } 

    public IList<Emp> GetNonMasterDetails() 
    { 
     IList<Emp> nonMasterList = new List<Emp>    
     { 
      new Emp { Id = 952491, Name = "Z005H717", Amount = 500 }, 
      new Emp { Id = 1191676, Name = "Z005H717", Amount = 500 }, 
      new Emp { Id = 1227997, Name = "Z005HY11", Amount = 400 } 
     }; 
     return nonMasterList; 
    } 


} 

Emp obj = new Emp(); 
     IList<Emp> masterList = obj.GetMasterDetails(); 
     IList<Emp> nonMasterList = obj.GetNonMasterDetails(); 
     var first = masterList.Where(p => !nonMasterList.Any(l => p.Id == l.Id || p.Name ==l.Name)).ToList(); 
     var second = nonMasterList.Where(p => !masterList.Any(l => p.Id == l.Id || p.Name == l.Name)).ToList(); 

私は上記のラムダを試していますが、動作しません。私はここで何をしていますか? ありがとう

答えて

0

あなたの質問はうまくいきます。 IdまたはNameが等しい不一致レコード。おそらく、あなたが一致していないレコードを探しているのでしょうか?(& &)という名前は同じです。またはIDまたは名前だけXOR(^)。

||& &となっているかどうかを確認してください。ご質問のための

ヒント:

タグをクリアします。この質問は、asp.netやwpfに関するものではありません。 linq、c#、ブール式です。また、あなたの提案ではっきりしています。

いいえ、私は比類のない記録が必要です。 2つのレコードは、Idとその名前が等しいときに一致します。

+0

私は質問のデータを更新し、それが機能していない。 – user1301587

+0

どのようなデータがありますか? &&はあなたを助けましたか? –

+0

あなたのOR条件p.Id == l.Id|| p.Name == l.Name IdまたはNameのどちらかが等しい場合にtrueを返します。あなたのリストのすべてのデータは、この条件を使用して、他のレコードと等しいレコードを持ちます。 –

関連する問題