我有两个对象,分别是卡片和交易:
Card:
public string CardID {get; set;}
public string TransactionRef {get; set;}
Transaction:
public string TxnID {get; set;}
public string TxnDetails {get; set;}
注意:TransactionRef
的格式为Date|TxnID
我还有两个对象的列表:List<Card> cardDetails
和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'}
我希望能够使用TxnDetails筛选transDetails中的cardDetails,以过滤掉第二个列表中不包含TxnDetails的项目。
这应该是输出:
cardDetails:
{CardID = '3', TransactionRef = '20150824|Guid3'}
我尝试使用linq这样做:
cardDetails = cardDetails.Where(x => transDetails.Any(y => x.TransactionRef.Contains(y.TxnDetails) == false)).ToList();
但它总是返回一个空列表。我已经尝试过许多变体的查询,但都没有成功。我知道这个问题以前已经被问过了,在搜索了它们并尝试了它们的解决方案之后,我仍然无法得到正确的结果。
有人能建议我的查询哪里出了问题吗?
注意:我忘记提到的一件事是,这些列表可能包含数千条记录。因此性能也很重要。