Ho due oggetti e cioè carta e transazione:filtro due liste in una proprietà C# utilizzando LINQ
Card:
public string CardID {get; set;}
public string TransactionRef {get; set;}
Transaction:
public string TxnID {get; set;}
public string TxnDetails {get; set;}
Nota: Il TransactionRef
è del formato Date|TxnID
Ho anche un elenco dei due oggetti List<Card> cardDetails
e List<Transaction> transDetails
cardDetails:
{CardID = '1', TransactionRef = '20150824|Guid1'}
{CardID = '2', TransactionRef = '20150824|Guid2'}
{CardID = '3', TransactionRef = '20150824|Guid3'}
transDetails:
{TxnID = '23', TxnDetails = 'Guid1'}
{TxnID = '24', TxnDetails = 'Guid2'}
Desidero filtrare cardDetails utilizzando transDetails basato su TxnDetails in modo da filtrare gli elementi che non contengono TxnDetails dalla seconda lista.
questo dovrebbe essere l'output:
cardDetails:
{CardID = '3', TransactionRef = '20150824|Guid3'}
Ho cercato in questo modo utilizzando LINQ:
cardDetails = cardDetails.Where(x => transDetails.Any(y => x.TransactionRef.Contains(y.TxnDetails) == false)).ToList();
ma restituisce sempre la lista come vuoto. Ho provato molte varianti di questa query senza successo. So che questa domanda è stata fatta prima e dopo averli cercati e provato le loro soluzioni, non sono ancora in grado di farlo bene.
Qualcuno può suggerire cosa c'è di sbagliato nella mia richiesta?
Nota: Una cosa che ho dimenticato di menzionare è che queste liste possono contenere migliaia di record. Quindi anche le prestazioni sono importanti.
Questa query dovrebbe effettivamente restituire tutte le carte, sei sicuro che nessuno ritorna? –
Sì, non restituisce nulla. Voglio restituire solo la terza voce in cardDetails, che non contiene TxnDetails dal secondo elenco – nitinvertigo
Perché 'TxnDetails.ToString()' quando 'TxnDetails' È una stringa? –