1

我正在构建一个 ASP.NET MVC 3 应用程序,其中我有根据此模型的自定义对象列表:

public class AbnAmroTransaction
{
    public int TransactionId { get; set; }
    public int AccountNumber { get; set; }
    public string Currency { get; set; }
    public int TransactionDate { get; set; }
    public int InterestDate { get; set; }
    public decimal StartBalance { get; set; }
    public decimal EndBalance { get; set; }
    public decimal Amount { get; set; }
    public string Description { get; set; }
    public int CategoryId { get; set; }
}

我还有第二个列表,其中包含稍微相似的自定义对象类型“事务”的对象(我使用 DBML 从我的 SQL Server 2008 数据库中获得):

Transaction LinqToSql Object

int TransactionId
int ImportId
int CategoryId
DateTime DateTime
Nvarchar(MAX) Currency
Money Amount
Nvarchar(MAX) Description

我正在尝试创建一个包含所有 AbnAmroTransactions 的第三个列表,其中 AbnAmroTransaction.TransactionId 不在 Transactions 列表 (TransactionId) 中。我如何做到这一点而不必遍历两个列表,这似乎是一种非常低效的方法?

我找到了这篇文章: http: //msdn.microsoft.com/en-us/library/system.collections.iequalitycomparer.equals.aspx 但这似乎只适用于相同类型的对象。

4

1 回答 1

3

如果您使用的是 linq,请查看except

var list1 = new List<int>() {1,2,3,4,5};
var list2 = new List<int>() {4,5,6,7};
var newList = list1.Except(list2);

新列表将包含 {4,5}

但是您必须首先检查交易 ID。

于 2012-05-22T22:08:35.747 回答