-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();
私は上記のラムダを試していますが、動作しません。私はここで何をしていますか? ありがとう
私は質問のデータを更新し、それが機能していない。 – user1301587
どのようなデータがありますか? &&はあなたを助けましたか? –
あなたのOR条件p.Id == l.Id|| p.Name == l.Name IdまたはNameのどちらかが等しい場合にtrueを返します。あなたのリストのすべてのデータは、この条件を使用して、他のレコードと等しいレコードを持ちます。 –