using System.Collections.Generic;
using System.Collections;
public static void Main()
var cardDetails = new List<Card>
new Card {CardID = "1", TransactionRef = "20150824|Guid1"},
new Card {CardID = "2", TransactionRef = "20150824|Guid2"},
new Card {CardID = "3", TransactionRef = "20150824|Guid3"}
var transDetails = new List<Transaction>
new Transaction {TxnID = "23", TxnDetails = "Guid1"},
new Transaction {TxnID = "24", TxnDetails = "Guid2"}
var allTxnDetails = new HashSet<string>(transDetails.Select(t => t.TxnDetails));
let txnDetails = GetTxnDetails(card)
where ! allTxnDetails.Contains(txnDetails)
Console.WriteLine(c.CardID);
static string GetTxnDetails(Card card)
return card.TransactionRef.Split('|')[1];
public string CardID {get; set;}
public string TransactionRef {get; set;}
public string TxnID {get; set;}
public string TxnDetails {get; set;}